如何使用Apache / Php的Wine? - '/ var / www'不归您所有

时间:2009-09-04 05:34:28

标签: php apache wine

我需要从我的Debian服务器上的php脚本运行一个Windows命令行工具。 为此,我正在尝试葡萄酒。 通过终端调用葡萄酒和工具工作正常:“$ wine tool.exe”

但是当我从我的php脚本运行时...

exec(“wine tool.exe”);

...我在Apache错误日志中得到以下内容: wine:'/ var / www'不归您所有,拒绝在那里创建配置目录

我猜这是一个简单的基本linux用户权限问题... 我应该将Wine的用户权限更改为www-data吗?怎么样?

7 个答案:

答案 0 :(得分:7)

您应该为运行Wine创建一个单独的主目录。创建一个由www-data拥有的目录,设置HOME变量,su www-data,并运行winecfg一次;然后运行tool.exe(作为该用户)。在exec调用中,确保已设置HOME(尝试exec("HOME=/tmp/wine wine tool.exe")

答案 1 :(得分:1)

您将要使用chown来修改wine和tool.exe的所有权。

请注意,这可能会引发一些安全问题。

答案 2 :(得分:1)

因为我正在运行FreeBSD,所以我得到错误wine:'/ root'不归你所有。创建一个名为'/ var / www'的文件夹不会有太大帮助:(

Apache正在以www运行,或者线程正在运行,而据我所知,主进程以root用户身份运行。如果您没有任何管理员权限,您可以随时尝试让管理员在sudoers文件中添加一行。

我已将以下行添加到我的sudoers文件中,让我们的Apache(www用户)使用sudo运行wine作为我的用户(myuser),而不是www或root。

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

在我的PHP脚本中,我有类似的东西:

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

到目前为止似乎工作。

答案 3 :(得分:1)

我正在使用CentOS 5.5 Linux(与RHEL相同)并刚从我家复制 .wine 目录并递归更改了所有者:

# sudo cp -R ~/.wine /var/www
# sudo chown -R apache.apache /var/www/.wine
对于一些棘手的Windows程序BTW,我必须安装Xvfb(rpm包名:xorg-x11-server-Xvfb)并从/ etc / inittab内部运行它:1然后将DISPLAY设置为{ {1}}从我的网络脚本启动Wine之前。

答案 4 :(得分:0)

似乎无害,只要葡萄酒可以在没有配置目录的情况下运行。

尝试查看wine是否可以在命令行上使用指定的配置目录运行。如果没有,你可以做两件事:要么将现有的(从你的用户)葡萄酒配置目录复制到/ var / www,要么你只是忽略这个警告并将STDERR输出重定向到其他地方:

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

答案 5 :(得分:0)

或者......你可以跳过整个sudo的事情。启动wine以在您的主目录中生成配置文件,然后要求管理员在您的wine配置文件上执行一个名为www:users .wine的消息。

Apache现在应该拥有使用配置文件运行wine所需的权限。

www用户似乎在linux上有另一个名字......

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

答案 6 :(得分:0)

解决 所以最后,使用了' mono'命令并运行PHP脚本。 这是我的命令:

f.close()

要安装mono,请点击此链接。 Install mono

由于

Raja Chakraborty