我使用 php-fpm 在 /srv/http 的 chroot 中创建了一个 nginx 服务器。两种服务都使用 http 用户并且工作正常。当我尝试运行 exec 命令时出现问题,例如
echo shell_exec('/usr/bin/ls');
网页或错误中根本没有输出。我也试过
error_log(shell_exec('/usr/bin/ls');
仍然没有。
我尝试或知道的事情:
- 安全模式关闭
- 启用执行
- 用户是 http(使用 phpinfo())
- display_errors = on
- error_reporting = E_ALL
- sudo /usr/bin/chroot --userspec=http:http /srv/http ls 工作正常
- 可以使用 file_puts_content 和 fopen/fread 创建文件并从中读取
- 尝试了 shell_exec、exec、system 和 passthrough - 没有任何效果
- 尝试将 2>&1 附加到命令的末尾,但什么也没有
- 我已经复制了所有必要的可执行文件和库
- /srv/http/www(网页所在的位置)下的所有库、二进制文件和所有内容都具有可执行和读取权限
- doc_root 是 www
据我所知,一切都在 chroot 中运行,除了通过 php-fpm 的 shell 命令。任何人都知道我哪里出错以及如何解决它?