尝试在文档根目录之外包含文件(Plesk 10)

时间:2011-12-18 09:41:59

标签: php apache include open-basedir

好的,我已经尝试了一切,这是迄今为止最好的地方,我想在这里制作文档根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

如果我理解正确,我就不会使用服务器的整个路径。

1 个答案:

答案 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"

HTML中的

因此,重组我的所有网站文件后,我的网站现已启动并运行!感谢所有帮助,希望有人不必再这样做。此外,我看到Plesk正在更新此帖的帖子,因为这是一个大问题。为Parallels工作的人说,http://forum.parallels.com/showthread.php?t=113236这将是下一个版本中的一个选项,所以在那之前它是黑客时间!!