nginx - php-fpm 不工作 exec、系统、shell_exec,只有 CLI

标签 nginx exec php openbsd

php-fpm, nginx 使用时执行 .phpfiles() shell_exec() system() 在命令行中运行良好。

运作良好的例子:

#php myphp.php

myphp.php 包含:

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

但是如果我在我的浏览器上输入 http://localhost/myphp.php,它就不再工作了。

有什么想法吗? 我编辑

我创建了一个包含以下内容的文件:

#cat info.php

<?php
if(function_exists('exec')) {
    echo "exec is enabled";
}
    phpinfo();
?>

在我的浏览器中,打印

exec is enabled, y php info..

我创建了一个包含以下内容的文件:

#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";
}

?>

在我的浏览器中,打印

Do it the regular way

难道我不想知道自己是否在 jail 里吗?

在我的 php ini 中

#cat /etc/php-5.5.ini

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

最佳答案

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

if(function_exists('exec')) {
    echo "exec is enabled";
} else {
    echo "exec is disabled";
}

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

如果 exec 列在下面,请将其删除。

然后重启php-fpm

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

编辑

使用完整路径进行 ping。您可以通过在 shell which ping

中发出此命令来找到它

编辑

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

关于nginx - php-fpm 不工作 exec、系统、shell_exec,只有 CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272233/

相关文章:

docker - docker-compose卷不起作用

nginx - 如何在 Gitlab Omnibus 服务器旁边为其他虚拟主机提供服务? [完整的逐步解决方案]

php - 用户在页面上花费的时间

Java - 执行控制台

PHP exec - 检查是否启用或禁用

python - 为什么我在编码代码上调用 exec 的函数会给出有关全局的错误?

php - 函数可以在 PHP 中初始化变量吗?

regex - 将 url 重定向到 url 到 www

PHPlush 调用时不打印输出

PHP:是否有一个命令可以合并相同键的数组并对具有相同键的内容求和