php-fpm无法运行exec,system,shell_exec,只有CLI

lau*_*aur 5 php openbsd nginx exec

php-fpm,nginxexec在使用时.phpfiles() shell_exec() system()从命令行工作正常.

效果很好的例子:

#php myphp.php
Run Code Online (Sandbox Code Playgroud)

myphp.php 包含:

<?php
exec('ping -c 3 google.com', $output);
print_r($output);
?>
Run Code Online (Sandbox Code Playgroud)

但是,如果我戴上我的浏览器http://localhost/myphp.php,它就不再起作用了.

有任何想法吗?我编辑

我制作了一个包含以下内容的文件:

#cat info.php

<?php
if(function_exists('exec')) {
    echo "exec is enabled";
}
    phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中,打印

exec已启用,y php信息..

我制作了一个包含以下内容的文件:

#cat info.php

<?php 
// Check for safe mode
if( ini_get('safe_mode') ){
    // Do it the safe mode way
echo "Do it the safe mode way";
}else{
    // Do it the regular way
echo "Do it the regular way";
}

?>
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中,打印

这是常规方式

难道我不想知道我是否在监狱里?

在我的PHP ini中

#cat /etc/php-5.5.ini
Run Code Online (Sandbox Code Playgroud)

safe_mode未显示,或ON或OFF.根本不存在

Har*_*nan 2

我认为 exec 和此类功能在您的 php.ini 中被禁用。你可以通过以下方式检查

if(function_exists('exec')) {
    echo "exec is enabled";
} else {
    echo "exec is disabled";
}
Run Code Online (Sandbox Code Playgroud)

打开您的 php.ini 并导航到disable_functions部分

如果 exec 列在此处,请将其删除。

然后重新启动php-fpm

另外,如果启用了安全模式,则此功能将不可用。您需要禁用它。

编辑

使用完整路径进行 ping。您可以通过在 shell 中发出此命令来找到它which ping

编辑

<?php
exec('/sbin/ping -c3 google.com', $output);
print_r($output);
?>
Run Code Online (Sandbox Code Playgroud)