【问题标题】:Why php exec, system and passthrough functions stopped working if FPM is enabled为什么启用 FPM 后 php exec、system 和 passthrough 函数停止工作
【发布时间】:2017-11-18 13:42:50
【问题描述】:
大家好,我的服务器配置一般。我正在使用 php exec 函数在我的网站上运行一些命令。但是如果我启用 PHP-FPM,它就会停止工作。
有人知道为什么会导致这个问题吗?
下面是运行命令的php函数
$cmd="pdftk " . $pdf_to_fill . " fill_form " . $fdf_file . " output $outputfile 2>&1";
exec($cmd, $output, $return_var);
提前感谢您的帮助。
【问题讨论】:
标签:
php
server
exec
fpm
pass-through
【解决方案1】:
这可能是几件事,首先,尝试确认是否启用了 exec,是否启用了安全模式,以及我们是否处于被监禁的 shell 中。
前两个可以用这个脚本完成,你访问的时候看看它输出什么:
if(function_exists('exec')) {
echo '<h1>exec is available.</h1>';
}
if( ini_get('safe_mode') ){
echo '<h1>Safe mode is on.</h1>';
}
jailed shell 有点难以检测,但运行 var_dump(scandir('/bin/')) 会给出一个指示,如果它的文件比从命令行运行 ls -ltr /bin 少得多,那么你在入狱的贝壳。
此外,可能值得使用 pdftk 二进制文件的完整路径,如果仍然无法正常工作,请尝试在 pdftk 路径上运行 is_executable。