我正在尝试从php执行perl脚本。 perl脚本正在读取网页并生成包含一些数据的xml文件。 如果我通过shell执行它一切都按预期工作,但当我试图通过PHP自动完成整个事情时没有任何作用。
我试过这个:
exec("perl /absolute/path/to/perl/script/parser.pl", $output, $result);
当我回显$result
变量时,它会显示2
。
我已经多次打开和关闭php safe_mode,但没有改变。
还试图将safe_mode_exec_dir
设置为没有正面结果。
当我执行一个简单的ls
exec("ls", $output, $result);
一切顺利,我得到了文件列表,$result
是0
。
perl脚本有chmod 777,因此不会出现权限问题。他的文件夹也有777。
我几乎可以肯定这个问题与服务器有关,但我无法找到答案。
任何帮助都会非常感激。
由于
答案 0 :(得分:3)
您可能需要指定perl可执行文件的完整路径。
尝试输入which perl
以查看完整路径,然后将完整路径放入exec
来电。
答案 1 :(得分:1)
您的示例似乎缺少第一个参数的结束引用。我还要确保perl的可执行文件在你的路径中。最后,文件夹不仅需要设置执行位,而且需要将所有直到root的目录设置为允许perl访问脚本。一个目录为750就足以让一个团队进入,但不是世界。作为用户,您可以在那里看到并查看脚本,但是您必须从执行脚本的用户的角度来看它 - 可能是您的网络服务器正在运行的ID。