php无法通过exec执行perl脚本
我试图从php执行perl脚本。 该perl脚本正在读取一个网页,并产生一些数据的XML文件。 如果我通过shell执行它,一切都按预期工作,但是当我试图通过php自动完成整个事情时什么都没有起作用。php无法通过exec执行perl脚本
我已经试过这样:
exec("perl /absolute/path/to/perl/script/parser.pl", $output, $result);
当我回声$result
变量它显示2
。 我已经打开和关闭了php safe_mode几次,但没有任何改变。 也试图设置safe_mode_exec_dir
没有积极的结果。
当我exec的一个简单的LS
exec("ls", $output, $result);
一切顺利,我得到的文件列表和$result
是0
。
perl脚本有chmod 777,这样它就不会成为权限问题。他的文件夹也有777.
我几乎可以肯定,这个问题是关于服务器,但我无法找出什么。
任何帮助将非常感激。
谢谢
您可能需要指定perl可执行文件的完整路径。
尝试输入which perl
以查看完整路径,然后将该完整路径放入exec
调用中。
perfekt!工作!非常感谢你! – Dalen 2011-02-23 23:19:22
您的示例似乎缺少第一个参数的结束引用。我也会确保perl的可执行文件在你的路径中。最后,文件夹不仅需要设置执行位,而且需要设置所有直到root的目录以允许perl访问脚本。一个目录相当普遍的是750,这样一个组可以进入,但不是世界。作为一个用户,你可以在那里看到脚本,但是你必须从执行脚本的用户的角度来看它 - 大概是你的web服务器运行的id。
什么时候'parser.pl'返回2?你确定你用正确的参数运行脚本吗? '$ output'中有什么?你的例子缺少一个结束双引号。 – Mikel 2011-02-23 23:04:40
该脚本没有任何参数,我试图复制/粘贴,因为它是上面写的(显然是正确的路径)到shell中,它的工作原理。你是对的这个例子是缺少一个排队,但只是在SO内复制代码的问题,抱歉。 – Dalen 2011-02-23 23:07:15
$ result应该包含被执行的命令的状态,似乎是2,但我不知道它是什么意思 – Dalen 2011-02-23 23:10:19