我正在编写一个 PHP 脚本来上传一个文件,该文件通过使用系统调用 fork()
、exec()
和 execl 来执行其他 c 文件()
。
不幸的是 execl() 函数没有工作。
更详细地说,PHP 脚本执行 exec()
函数为:
$output =shell_exec('./app/p1';
echo "<pre>$output</pre>"; )
执行p1是p1.c的可执行文件,p1.c程序调用execl()为:
execl("./p2", "./p2", "a.param","test.txt", NULL);
执行p2,即p2.c的可执行文件。结果p1.c中的execl()没有执行,p2.c也没有执行。 有什么建议么。
最佳答案
如 shell_exec
documentation 中所述,只有在 PHP 配置中禁用了 safe_mode
时才启用此功能。
要禁用它(仅适用于 PHP prior to 5.4 ),您必须在 php.ini
中包含以下行:
safe_mode = Off
另一个可能的问题可能来自当前路径。您正在使用相对路径(./app/p1
和 ./p2
)调用二进制文件。您确定这些二进制文件在当前工作目录中吗?
要解决这个问题,只需在这两种情况下都使用文件的完整路径即可。
关于执行exec的PHP脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12965777/