5

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

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

exec("葡萄酒工具.exe");

...我在我的 Apache 错误日志中得到以下信息: wine: '/var/www' is notowned by you, refusing to create a configuration directory there

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

4

7 回答 7

7

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

于 2009-09-04T06:38:50.260 回答
1

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

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

于 2009-09-04T05:44:28.577 回答
1

因为我正在运行 FreeBSD,所以我收到错误 wine: '/root' is notowned by you。创建一个名为“/var/www”的文件夹不会有太大帮助:(

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

我在我的 sudoers 文件中添加了以下行,它让 Apache(www 用户)使用 sudo 作为我的用户(myuser)运行 wine,而不是作为 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"

到目前为止似乎工作。

于 2010-05-06T20:21:00.917 回答
1

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

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

顺便说一句,对于一些更棘手的 Windows 程序,我必须安装Xvfb(rpm 包名称:xorg-x11-server-Xvfb)并从 /etc/inittab 内部以 :1 运行它,然后localhost:1在从我的 Web 脚本启动 Wine 之前将 DISPLAY 设置为。

于 2011-01-07T14:01:16.880 回答
0

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

尝试找出 wine 是否可以在命令行上使用指定的配置目录运行。如果没有,您可以做两件事:将现有的(例如从您的用户)wine config 目录复制到 /var/www 或忽略此警告并将 STDERR 输出重定向到其他地方:

exec ("wine tool.exe 2>/dev/null");
于 2009-09-04T05:43:27.673 回答
0

或者......你可以跳过整个 sudo 事情。启动 wine 在你的主目录中生成一个配置文件,然后让管理员对你的 wine 配置文件执行 chown www:users .wine。

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

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

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

于 2010-05-07T22:08:06.867 回答
0

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

shell_exec('mono Release/X12Parser.exe Release/EDI_FILES/first_edi.edi Release/XML_FILES/firstXML.xml');

要安装单声道,请点击此链接。 安装单声道

谢谢

拉贾查克拉博蒂

于 2017-03-24T08:26:15.077 回答