好的,我已经尝试了一切,这是迄今为止最好的地方,我想在这里制作文档根httpdocs/[folder]/html
并且我有php包含我希望在根{{1}之上的文件但是无法进一步访问(require '../[folder]/file.php']
。我知道我受到/var/www/vhosts/example.com/httpdocs
的限制,因为open_basedir
中的值仍为httpdocs/[folder]/html
,但就我而言,我无法改变当地价值!
这是我到目前为止所尝试的: 我已经看到了这个 - How to include file outside document root? - 并创建了一个'vhost.conf',它位于conf目录中,重新配置了文件,重新启动了apache ......没有。这是一个很好的帖子,但似乎有点过时了。
我将php.ini本身编辑为phpinfo()
,将其上传到原来的位置,重新配置,重新启动 - 没有
我通过添加来自另一个conf文件(vhost.conf)的相同行来取出'httpd.conf'编辑它,把它放回去 - 什么都没有,然后我试着去做godaddy在这里说的话 - {{3并添加了行open_basedir = '/var/www/vhosts/example.com/httpdocs
- 也没有运气。
现在是0435,我几乎无法睁开眼睛 - 这个网站假设明天将在2000年推出!提前感谢愿意/能够阅读和/或帮助的任何人。
更新:感谢您的快速回复,以下是我能给您的最佳答案:
它会给你一个错误吗?
是的,我收到服务器错误并通过我的服务器错误日志,具体来说:
PHP警告:require()[function.require]:open_basedir限制生效。文件(/ var / www / vhosts / [example.com] / httpdocs / [文件夹] / [存在安全php文件的文件夹] / [file.php])不在允许的路径中:
所以我因为open_basedir限制而99.99%确定它。
您确定您的网络服务器已设为vhosts /?
的所有者
我很确定,我对控制服务器有点新意,我真的不知道这意味着什么,但我有一个虚拟专用服务器通过Godaddy,运行Parallels Plesk v10.3.1,我做了上面的文件通过Shell SSH移动。
在Plesk中,我可以将'Document root'更改为php_admin_value open_basedir none' to 'httpd.conf
以下的任何内容,Plesk会将'open_basedir'更改为我设置的任何内容。例如,如果我在Plesk中将文档根目录设置为“httpdocs”,则“open_basedir”将更改为同一文件夹,一切正常。问题是我不想公开访问/var/www/vhosts/example.com
我的目标是将“文档根目录”更改为/httpdocs/[folder]
,将“open_basedir”更改为/httpdocs/[folder]/html
,但由于某种原因,我无法更改/httpdocs
中的本地值。我想这样做是出于安全目的,所以人们只能直接访问非重要的php文件,但php本身我希望提供更多文件夹访问权。
您是否尝试使用相对路径或绝对路径?
我在php文件中尝试包含/要求'document root'上面的文件的路径看起来就像这样的格式:
open_basedir
如果我理解正确,我就不会使用服务器的整个路径。
答案 0 :(得分:0)
答案:(已更改为答案):
显然,在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
但我现在遇到了一个新问题。 'document root'指向正确的文件夹:
的/ var / WWW /虚拟主机/ [my.domain] /的httpdocs / [文件夹] / HTML
没有任何错误,但是当服务器到达时:
require '../[folder]/[file.php]';
它跳过它就像它甚至没有!没有给我一个错误消息或任何东西。它还会跳过我所有的嵌入式css文件,js文件,图像,视频......它不会进入任何目录!我觉得这是一个'php.ini'设置或Plesk正在做的奇怪事情。
已解决:最后一个问题是因为我从未使用过访问根目录上方的文件。允许PHP超越root但你不能这样做:
src="../img/imagefile.jpg"
。
因此,重组我的所有网站文件后,我的网站现已启动并运行!感谢所有帮助,希望有人不必再这样做。此外,我看到Plesk正在更新此帖的帖子,因为这是一个大问题。为Parallels工作的人说,http://forum.parallels.com/showthread.php?t=113236这将是下一个版本中的一个选项,所以在那之前它是黑客时间!!