从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执行外部程序.

谢谢你的任何想法……

最佳答案 尝试从命令行执行mono,但用户运行webserver(www-data或apache).

EJ.

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

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

点赞