在nginx上使用PHP-FPM的Exec(在chroot下)不返回任何内容
我已经用phpfpm在chroot/srv/http中创建了一个nginx服务器。这两个服务都使用http用户,并且工作正常。当我尝试运行exec命令(如在nginx上使用PHP-FPM的Exec(在chroot下)不返回任何内容,nginx,php,chroot,Nginx,Php,Chroot,我已经用phpfpm在chroot/srv/http中创建了一个nginx服务器。这两个服务都使用http用户,并且工作正常。当我尝试运行exec命令(如 echo shell_exec('/usr/bin/ls'); 网页或错误中根本没有输出。我也试过了 error_log(shell_exec('/usr/bin/ls'); 还是什么都没有 我尝试过或知道的事情: 安全模式关闭 已启用exec 用户是http(使用phpinfo()) 显示错误=on 错误报告=全部 sudo/usr/b
echo shell_exec('/usr/bin/ls');
网页或错误中根本没有输出。我也试过了
error_log(shell_exec('/usr/bin/ls');
还是什么都没有
我尝试过或知道的事情:
据我所知,除了通过php fpm的shell命令外,所有东西都在chroot中工作。有人知道我哪里出错了以及如何修复吗?如果你
chroot
到某个目录,那么这个目录就成为你所有PHP脚本的根目录。这意味着,如果您在PHP中执行/usr/bin/ls
,它将尝试执行/srv/http/usr/bin/ls
您可以将可执行文件复制到该目录,但要注意安全隐患。如果您将关键系统可执行文件复制到chrooted目录中,基本上就绕过了
chroot
的积极影响,这听起来可能很愚蠢,但您必须将/bin/sh
(而不是/bin/bash
)复制到chroot
例如,请看这个问题:我没有得到任何输出
echo shell_exec('/usr/bin/ls');
要么。大概是因为ls
不是一个文件,而是一个内置命令。运行:
echo shell_exec('ls');
产出:
css演示favicon.ico images js path.php robots.txt routing.php测试
这是该站点的根目录中的文件列表。我已经这样做了。我将/usr/bin/ls复制到/srv/http/usr/bin/ls(在查看了ldd/srv/http/usr/bin/ls所需的库之后),将.so文件复制到/srv/http/usr/lib。但它仍然不起作用。请参见#6,我可以在chroot中运行它,这样我就有了所需的文件。还可以使用
ldd sh
查找它需要的库。