【发布时间】:2013-06-14 02:44:54
【问题描述】:
我正在尝试在 PHP 中执行 /path/to/script.pl;除其他外,该脚本在执行完毕后会发送一封电子邮件。当我尝试时
exec( "/path/to/script.pl" );
什么都没有发生。其他一些相关数据点:
print exec( "whoami" );
/path/to/script.pl
sudo -u apache /path/to/script.pl
第一个,在 PHP 中运行,打印 apache;第二个,在 shell 中运行,按预期运行(发送电子邮件);第三个,在shell中运行,也按预期运行(发送邮件)。
由此看来,exec 对于某些命令运行良好,并且该脚本运行良好,并且适用于 httpd 用户 (apache)。该脚本本身没有文件 I/O,但它确实访问 MySQL 数据库并使用Net::SMTP::TLS 和LWP::Simple。有什么想法可能会出错吗?
【问题讨论】:
-
你的脚本设置为由 apache 用户执行吗?
-
是的,它是
chmod 755;我还认为sudo -u apache /path/to/script.pl会仔细检查 --- 错了吗? -
Weird... 尝试将此文件 chown 给 apache 用户... 我使用 popen 和 pclose 命令,它工作正常。您是否尝试过检查您的 php 日志是否有错误?记得激活php错误日志。
-
我在脚本的开头设置了
error_reporting( E_ALL )并且... Apache 日志显示“sh: /path/to/script.pl: Permission denied”。即使交换了用户。 -
尝试使用 chown apache:apache 和 chmod +x 来归档。让我知道它是否有效。在您的 apache 配置中,您可以设置 httpd 将代表哪个用户/组执行。
标签: php apache unix shell-exec