【发布时间】:2011-07-03 04:08:51
【问题描述】:
我正在尝试从 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。
我几乎可以确定问题出在服务器上,但我无法找出原因。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
parser.pl什么时候可以返回2?您确定您正在使用正确的参数运行脚本吗?$output有什么东西吗?而且您的示例缺少结束双引号。 -
该脚本没有任何参数,我尝试将上面写的(显然使用正确的路径)复制/粘贴到外壳中并且它可以工作。你是对的,这个例子缺少一个 quete,但这只是在 SO 中复制代码的问题,对不起。
-
$result 应该包含执行命令的状态,似乎是 2,但我不知道这是什么意思
-
如果您使用简单的 perl 脚本(例如
exit(0);),这是否有效?这会让你知道它是在你的 Perl 脚本中,还是你根本无法执行 Perl。