好的,我已经尝试了一切,这是迄今为止看起来最好的地方,我想在这里httpdocs/[folder]/html
制作文档根目录,并且我有 php 包含我想在根(require '../[folder]/file.php']
之上但无法访问的文件超过 /var/www/vhosts/example.com/httpdocs
.我知道我受到open_basedir
的限制,因为价值仍然httpdocs/[folder]/html
phpinfo()
但对于我的生活,我无法改变这个本地价值!
这是我到目前为止尝试过的:我已经看到这个 - 如何在文档根目录之外包含文件?- 并创建了一个位于conf目录中的"vhost.conf",重新配置了文件,重新启动了apache...无。 这是一个很好的帖子,但似乎有点过时了。
我将 php.ini 本身编辑为 open_basedir = '/var/www/vhosts/example.com/httpdocs
,将其上传回原处,重新配置,重新启动 - 什么都没有
我从另一个conf文件(vhost.conf(中添加相同的行来拉出"httpd.conf"编辑它,将其放回原处 - 什么都没有,然后我尝试按照godaddy在这里所说的进行操作 - http://help.godaddy.com/article/1616 并添加了行php_admin_value open_basedir none' to 'httpd.conf
- 也没有运气。
现在是0435,我几乎睁不开眼睛 - 这个网站应该在明天2000年推出! 提前感谢任何愿意/能够阅读和/或帮助的人。
更新:感谢您的快速回复,这是我能给您的最佳答案:
它会给你一个错误吗?
是的,我收到服务器错误,并通过我的服务器错误日志,特别是:
PHP 警告: require(( [function.require]: open_basedir限制生效。File(/var/www/vhosts/[example.com]/httpdocs/[folder]/[存在安全php文件的文件夹]/[file.php](不在允许的路径内:
所以我 99.99% 确定这是因为open_basedir限制。
您确定您的网络服务器被设置为vhosts/的所有者吗?
我很确定,我对控制服务器有点陌生,我真的不知道这到底是什么意思,但我通过 Godaddy 有一个虚拟专用服务器,运行 Parallels Plesk v10.3.1,我通过 Shell SSH 完成了上述文件移动。
在 Plesk中,我可以将"文档根目录"更改为低于 /var/www/vhosts/example.com
的任何内容,Plesk 会将"open_basedir"更改为我设置的任何内容。 例如,如果我在 Plesk 中将文档根目录设置为"httpdocs",则"open_basedir"将更改为同一文件夹,一切正常。 问题是我不想公开访问/httpdocs/[folder]
中的所有内容
我的目标是我想将"文档根目录"更改为/httpdocs/[folder]/html
,将"open_basedir"更改为/httpdocs
但由于某种原因,我无法在open_basedir
中更改该本地值。 出于安全目的,我想这样做,以便人们只能直接访问不重要的 php 文件,但 php 本身我想提供更多对文件夹的访问权限。
您是否尝试使用相对路径或绝对路径?
我在 php 文件中尝试包含/要求"文档根目录"上方文件的路径看起来与以下格式完全相同:
require '../[folder where secure php files exist]/file.php';
如果我理解正确,我没有使用服务器的整个路径。
答案:(这已更改为答案(:
显然,在 Plesk 10 中,Plesk的程序将"文档根"路径设置为"open_basedir",但是在 Plesk 10 中没有用户友好的方法来更改"open_basedir!!
所以相反,它有点黑客,你必须首先去这里:
/usr/local/psa/admin/conf/templates/default/service/php.php
然后更改文件中的这两行(第 11 行和第 29 行(: echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/'n";
对此: echo "php_admin_value open_basedir /var/www/vhosts/[your.domain]/httpdocs/:/tmp/'n";
或到您希望限制停止的任何地方。
然后确保运行这些行是 SSH:
/usr/local/psa/admin/sbin/httpdmng --reconfigure-all
/etc/init.d/httpd stop
/etc/init.d/httpd start
但是我现在遇到了一个新问题。"文档根目录"指向正确的文件夹:
/var/www/vhosts/[my.domain]/httpdocs/[folder]/html
但是,当服务器到达以下位置时,没有任何错误: require '../[folder]/[file.php]';
就像它甚至不存在一样!没有给我错误味精或任何东西。 它还跳过了我所有嵌入的css文件,js文件,图像,视频...它不会进入任何目录! 我有一种感觉,这是一个"php.ini"设置或 Plesk 正在做的事情。
已解决:最后一个问题是因为我从未访问过根目录上方的文件。 PHP 被允许在根目录之上,但你不能这样做: src="../img/imagefile.jpg"
在 HTML 中。
因此,在重组我的所有网站文件后,我的网站现在可以启动并运行了! 感谢所有帮助,希望有人不必再这样做了。 另外,我看到了一篇 Plesk 正在更新此内容的帖子,因为这是一个大问题。 为 Parallels 工作的人说,http://forum.parallels.com/showthread.php?t=113236 这将是下一个版本的一个选项,所以在那之前是黑客时间!!