[英]Exec with PHP-FPM on nginx (under chroot) returns nothing
我用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中工作。 任何人都知道我哪里出错了以及如何解决它?
这可能听起来很愚蠢,但你必须将/bin/sh
(不是/bin/bash
!)复制到chroot
。
例如,看到这个问题: 如何更改php的exec()的shell
如果你chroot
到某个目录,那么这个目录将成为所有PHP脚本的根目录。 这意味着,如果你从PHP中执行/usr/bin/ls
,它将尝试exectue /srv/http/usr/bin/ls
。
您可以将可执行文件复制到该目录 - 但请注意安全隐患。 如果将关键系统可执行文件复制到chrooted目录中,则基本上可以绕过chroot
的正面影响。
我没有输出
echo shell_exec('/usr/bin/ls');
无论是。 大概是因为ls
不是文件而是内置命令。 运行:
echo shell_exec('ls');
输出:
css demos favicon.ico图片js path.php robots.txt routing.php test
这是该站点的根目录中的文件列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.