Apache / PHP den Wine nasıl kullanılır?

6 Cevap php

I need to run a windows command line tool from a php script on my Debian server. For that, I'm trying Wine. Invoking wine and the tool via terminal works fine: "$ wine tool.exe"

Ama benim php komut aynı çalıştırırken ...

exec ("şarap tool.exe");

...I get the following in my Apache error log: wine: '/var/www' is not owned by you, refusing to create a configuration directory there

I guess this is a simple fundamental linux user rights problem... Should I change the user rights for Wine to www-data? How?

6 Cevap

Sen Şarap çalıştırmak için ayrı bir ev dizini oluşturmanız gerekir. Www-veriler ait bir dizin oluşturun, EV değişken, su www-data seti ve bir kez winecfg koşmak; sonra (yani kullanıcı olarak) tool.exe çalıştırın. Exec çağrı olarak, ANA (exec("HOME=/tmp/wine wine tool.exe") deneyin) ayarlanmış olduğundan emin olun

FreeBSD koşuyorum beri ben hata şarap almak: '/ root' Size ait değil. '/ Var / www' adında bir klasör oluşturma çok yardımcı olmayacaktır: (

Apache www olarak çalışan, ya da ana süreç bildiğim kadarıyla root olarak başlarken iplikleri vardır. Herhangi bir yönetici haklarına sahip değilseniz, her zaman sudoers dosyasına bir satır eklemek için yönetici sormak deneyebilirsiniz.

Benim sudoers dosyasına aşağıdaki satırı ekledim ve Apache (www kullanıcı) www veya root olarak yerine, benim kullanıcı (myuser) olarak şarap çalıştırmak için sudo kullanalım.

www localhost = (myuser) NOPASSWD: / usr / home / myuser / bin / wine

Benim PHP komut dosyası böyle bir şey var:

exec ("HOME = / usr / home / myuser sudo-u myuser / usr / home / myuser / bin / wine / usr / home / myuser / test.exe"

Bugüne kadar iş gibi görünüyor.

Şarap yapılandırma dizin olmadan çalışabilen sürece, zararsız görünüyor.

Deneyin ve şarap komut satırında belirtilen yapılandırma dizin ile çalıştırabilirsiniz olmadığını öğrenmek. Değilse yapabileceğiniz iki şey var: Eğer / var / www içine bir (mesela kullanıcı) mevcut wine config dizini kopyalamak ya da sadece bu uyarıyı dikkate almaz ve başka bir yerde STDERR çıktıyı yeniden yönlendirmek ya da:

exec ("wine tool.exe 2>/dev/null");

Sen chown şarap ve Tool.Exe sahipliğini değiştirmek için kullanmak istediğiniz gidiyoruz.

Bu potansiyel olarak bazı güvenlik endişeleri kadar açık ki tavsiye edilebilir.

Yoksa ... Bütün sudo şeyi atlamak olabilir. Ev dizininde bir yapılandırma dosyası oluşturmak için şarap başlayın, sonra bir chown www yapmak için admine sor:. Şarap config dosyaları kullanıcıların şarap.

Apache şimdi yapılandırma dosyasını kullanarak şarap çalıştırmak için gerekli haklara sahip olmalıdır.

Www kullanıcı linux üzerinde başka bir isim var gibi görünüyor ...

exec ("HOME = / usr / home / myuser / usr / home / myuser / bin / wine / usr / home / myuser / test.exe"

Ben CentOS 5.5 Linux (RHEL aynı) kullanıyorum ve sadece benim evden .wine dizini kopyalanan ve özyinelemeli sahibi değişti:

# sudo cp -R ~/.wine /var/www
# sudo chown -R apache.apache /var/www/.wine

Ve / etc / inittab içinde çalıştırabilirsiniz: 1 ve localhost'a sonra set EKRAN: MEZUNLARI bazı yanıltıcıdır Windows programı için ben Xvfb (xorg-x11-server-xvfb rpm paket adı) kurmak zorunda kaldım: benim web script Şarap başlamadan önce 1.