我用php-fpm在/ srv / http的chroot中创建了一个nginx服务器。两个服务都使用http用户,它工作正常。当我尝试运行诸如
之类的exec命令时出现问题echo shell_exec('/usr/bin/ls');
网页或错误中根本没有输出。我也试过了
error_log(shell_exec('/usr/bin/ls');
仍然没有。
我尝试或知道的事情:
据我所知,除了通过php-fpm的shell命令外,一切都在chroot中工作。任何人都知道我哪里出错了以及如何解决它?
答案 0 :(得分:1)
这可能听起来很愚蠢,但你必须将/bin/sh
(不是/bin/bash
!)复制给你chroot
。
答案 1 :(得分:0)
如果您chroot
到某个目录,那么此目录将成为所有PHP脚本的根目录。这意味着,如果您从PHP中执行/usr/bin/ls
,它将尝试exectue /srv/http/usr/bin/ls
。
您可以将可执行文件复制到该目录 - 但请注意安全隐患。如果将关键系统可执行文件复制到chrooted目录中,则基本上会绕过chroot
的正面影响。
答案 2 :(得分:0)
我的
没有输出echo shell_exec('/usr/bin/ls');
任一。大概是因为ls
不是文件而是内置命令。运行:
echo shell_exec('ls');
输出:
css demos favicon.ico图片js path.php robots.txt routing.php test
这是我网站根目录中的文件列表。