open_basedir 没有任何效果

发布于 2024-07-17 05:44:15 字数 288 浏览 15 评论 0原文

对于我的网络托管面板,需要阻止用户访问其自己目录 (/var/www/u/s/username) 之外的文件。 我尝试在 httpd.conf 中使用这一行来阻止人们访问目录。

<Directory /var/www/users/>
php_admin_value open_basedir .:/usr/lib/php5
</Directory>

但在php.ini中,似乎没有效果。 我究竟做错了什么?

For my web hosting panel, users need to be blocked from accessing files outside their own directory (/var/www/u/s/username). I tried to use this line in httpd.conf to prevent people from going up a directory.

<Directory /var/www/users/>
php_admin_value open_basedir .:/usr/lib/php5
</Directory>

But in php.ini, it seems to have no effect. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

挽你眉间 2024-07-24 05:44:15

这可能是一个愚蠢的建议,但是您在更改 php.ini 后是否重新启动了网络服务器?

您可能尝试使用的另一种方法是使用“auto_prepend_file”指令附加一个文件,以包含一个脚本以将 open_basedir 指令收紧到当前用户目录:

来自 PHP.net (http://www.php.net/manual/en/ini.sect.safe-mode.php)

从 PHP 5.3.0 开始,open_basedir 可以在运行时收紧。 这意味着如果 open_basedir 在 php.ini 中设置为 /www/,脚本可以在运行时使用 ini_set() 将配置收紧到 /www/tmp/

其他建议:

Apache 配置将需要正确设置 INI 覆盖才能有效。 确保您在服务器或虚拟主机的 Apache 配置中设置了“AllowOverride Options”或“AllowOverride All”。

https://www.php.net/configuration.changes

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

It might be a silly suggestion, but have you restarted the webserver after making the php.ini changes?

Another method you might try using is to append a file using the "auto_prepend_file" directive to include a script to tighten up the open_basedir directive to the current users directory:

From PHP.net (http://www.php.net/manual/en/ini.sect.safe-mode.php)

As of PHP 5.3.0 open_basedir can be tightened at run-time. This means that if open_basedir is set to /www/ in php.ini a script can tighten the configuration to /www/tmp/ at run-time with ini_set()

ADDITIONAL SUGGESTION:

The Apache configuration will need to be set up properly for INI overrides to be effective. Ensure that you have "AllowOverride Options" or "AllowOverride All" set in the Apache config for your Server or Virtual Host.

https://www.php.net/configuration.changes

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

左耳近心 2024-07-24 05:44:15

您可能需要为每个用户目录添加一行:

<Directory /var/www/u/s/username>
php_admin_value open_basedir "/var/www/u/s/username/:/shared/path/"
</Directory>

请注意,此处的尾部斜杠是为了防止用户“username”访问“username2”目录。

You may need to add a line for each user Directory:

<Directory /var/www/u/s/username>
php_admin_value open_basedir "/var/www/u/s/username/:/shared/path/"
</Directory>

Note that the trailing slash is here to prevent user "username" from accessing a "username2" directory.

死开点丶别碍眼 2024-07-24 05:44:15
  1. 据我所知,它不是路径格式,它必须只是一个目录;
  2. 使用 ”。” 与 open_basedir 完全没有意义,“。” 始终是当前目录。 您可以 chdir('/wherever/you/want'),其中包含“.” 扩展为 /wherever/you/want
  1. As far as I can tell, it's not in path format it has to be just one directory;
  2. Using "." with open_basedir makes no sense at all, "." is allways the current directory. You can chdir('/wherever/you/want'), having "." expanded as /wherever/you/want
眼藏柔 2024-07-24 05:44:15

您很可能修改了错误的“php.ini”。

Most probably you're modifying the wrong "php.ini".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文