我正在编写一个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. 有什么建议。
答案 0 :(得分:0)
如shell_exec
documentation中所述,只有在PHP配置中禁用safe_mode
时才会启用此功能。
要禁用它(仅适用于PHP prior to 5.4),您必须在php.ini
中包含以下行:
safe_mode = Off
另一个可能的问题可能来自当前的路径。您正在使用相对路径(./app/p1
和./p2
)调用二进制文件。您确定这些二进制文件位于当前工作目录中吗?
要解决此问题,只需在两种情况下使用文件的完整路径。