无法通过 PHP shell_exec 在 apache 下运行 go 二进制文件

我有一个问题,我不明白发生了什么。我基本上是在使用这个 PHP 脚本来尝试运行一个 go 二进制文件:

<?php
shell_exec('/go/bin/x -arg -arg etc');

如果我通过命令行运行这个 PHP 文件,它就可以工作。如果我直接在浏览器中运行它(它在 www 下)它不起作用。没有任何错误。

cli 运行 asroot和 apache as www-data。我已将权限设置为0777for/go/bin/x并且我还将所有者/组更改为www-data. 依然没有。

什么会导致这种行为?

另请注意,它shell_exec有效,但到目前为止我只运行了其他 php 文件。


米琪卡哇伊
浏览 243回答 2
2回答

不负相思意

敬启者。我有同样的问题,即使它们在终端中运行良好,我也无法通过网站运行 shell_exec/exec。见日志:[13-Jul-2020 19:57:23 UTC] PHP Warning: shell_exec() has been disabled for security reasons in /...test_script.php on line 3案例 1:检查 disable_function 不包含“shell_exec”或“exec”的所有 php.ini$ sudo find / -name "php.ini"$ sudo cat <path_to_php.ini> | grep disable_functions// disable_functions = <<= This is OK// disable_functions = "shell_exec, exec, system...." <<= They are disabled删除您要使用的功能。不要忘记重启服务器。情况 2:如果所有 php.ini 的 disable_functions 都是空的。通过 Cpanel 在您的主机上检查您的 PHP-FPM。从您的 Cpanel 转到“MultiPHP Manager”并检查您域上的 PHP-FPM 状态。将其关闭,您将能够运行 shell_exec();

慕的地8271018

我不知道我以前怎么没有考虑过这个......问题是输入参数中的 1 个包含文本文件的位置,而 apache 没有读取该文件的权限。错误在 /var/log/apache2/error.log
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go