Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP exec()功能异常_Php_Apache_Unix_Shell Exec - Fatal编程技术网

PHP exec()功能异常

PHP exec()功能异常,php,apache,unix,shell-exec,Php,Apache,Unix,Shell Exec,我试图在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中运行,也按预期运行(发送电

我试图在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
。你知道哪里出了问题吗?

感谢评论告诉我实际检查错误日志

脚本是可执行的(
chmod755
),但层次结构中的目录是
rwxr-x---
;将此目录更新为
rwxr-xr-x
修复了该问题。
exec()
'd脚本路径上的每个目录都必须能够被
httpd
读取


问题已解决。

您的脚本是否设置为由apache用户执行?是的,它是
chmod 755
;我还认为,
sudo-u apache/path/to/script.pl
会再次检查这一点——有错吗?奇怪。。。尝试将此文件传送给apache用户。。。我使用popen和pclose命令,效果很好。您是否尝试检查php日志中的错误?记得激活php错误日志。我在脚本的开头设置了
错误报告(E\u ALL)
,然后。。。Apache日志显示“sh:/path/to/script.pl:Permission denied.”即使用户已交换。请尝试使用chown Apache:Apache和chmod+x来创建文件。让我知道它是否有效。在apache配置中,您可以设置httpd将代表哪个用户/组执行。