【发布时间】:2014-03-17 01:33:21
【问题描述】:
我正在尝试通过以下命令通过 PHP 执行 Perl 脚本:
$last_line = exec('/usr/bin/perl /path/to/perl/script.pl ' . escapeshellarg($argument),$output,$status);
脚本不执行其功能,退出状态始终为 2(shell 内置函数使用不当)。 Perl 和脚本都可以被任何用户读取和执行。在命令行上运行脚本就可以了。有什么想法吗?
【问题讨论】:
-
执行php脚本的用户和shell执行脚本的用户有区别吗?
-
是的,apache2用户执行脚本失败,而我的普通用户可以正常执行。
-
STDERR 打印出什么错误?
-
最常见的错误:权限错误,或者脚本假定当前工作目录是正在执行的脚本所在的目录。
-
因为我在失败时通过 Web 服务器运行脚本,所以我没有收到任何错误输出消息。另外,我使用完整的文件路径来避免工作目录错误。