从PHP调用Mono

时间:2011-08-25 15:09:37

标签: php mono

这有点复杂。 :-)我有一个用PHP编写的网站,需要调用一个用.NET编写的外部程序,在Mono下运行。它用以下方式调用程序:

/path/mono /path/executable arguments...

按照惯例(我也尝试将其放入bash脚本并从PHP调用脚本本身)。

据我所知,一切都按要求设置。 Mono本身运行正常,可执行(或脚本)具有可执行权限,所有者都可以。如果我从服务器上的命令行(Debian Lenny)发出上面的命令行(或调用上面提到的脚本),一切都运行正常,我的可执行文件执行没有错误。

但是,如果PHP调用相同的(使用exec(),system()或任何其他变体),我立即从Mono获得退出代码6并且我的可执行文件根本不运行(为了测试它,我使用“Hello World”可执行文件,它只执行一个输出行并返回0)。编译时没有任何额外的依赖,只是一个真正的“Hello Word”。绝对肯定这个程序不会返回退出代码6,它必须来自Mono,但我无法在任何地方找到它。

我可以从PHP调用其他任何东西,所以它不是安全模式或任何类似的限制,这将阻止我从PHP执行外部程序。

感谢您的任何想法...

1 个答案:

答案 0 :(得分:2)

尝试从命令行执行mono,但用户运行webserver(www-data或apache)。

EJ。

#su apache
$/path/to/mono /path/to/program.exe

我使用exec的常见问题是不同的环境变量(看看是否是bash或sh使用的是什么),对apache用户/组的权限等等。