我有几个用户在服务器上运行 PHP 脚本,我想锁定它,以便他们的脚本只能访问他们的 www 目录中的文件(它不使用 Linux 用户帐户,因此没有主目录)。
open_basedir
似乎是显而易见的选择,但我如何根据脚本的运行位置设置该参数?显然,open_basedir
每个用户的值都会有所不同。
我在 Ubuntu 11.04 上运行 PHP5-FPM - PHP5 作为 nginx 连接的 FastCGI 进程
任何帮助或建议都值得感激!
答案1
我找到了解决方案 - 基于文件路径或请求主机的 php.ini 指令。从文档:
[HOST=dev.site.com]
open_basedir = /var/www/dev.site.com
或者
[PATH=/var/www/dev.site.com]
open_basedir = /var/www/dev.site.com
答案2
假设您正在使用 Apache,您应该能够在每个 VirtualHost 实例中使用以下命令进行设置:-
php_admin_value open_basedir /path/to/restrict/to
抵制使用 的诱惑.
,因为用户仍然可以使用 更改目录chdir
。