为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
米琪卡哇伊 2022-06-13 17:21:50
我有一个问题,我不明白发生了什么。我基本上是在使用这个 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 文件。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

敬启者。


我有同样的问题,即使它们在终端中运行良好,我也无法通过网站运行 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();

//img1.sycdn.imooc.com//62a701cf0001a8f002510409.jpg

查看完整回答
反对 回复 2022-06-13
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我不知道我以前怎么没有考虑过这个......问题是输入参数中的 1 个包含文本文件的位置,而 apache 没有读取该文件的权限。错误在 /var/log/apache2/error.log



查看完整回答
反对 回复 2022-06-13
  • 2 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信