2011-12-18 144 views
1

好吧,我已经试过了一切,这是迄今为止最好的地方,我想在此创建文档根目录httpdocs/[folder]/html,并且我有我想要的php包含文件去根(require '../[folder]/file.php']以上,但不能访问比/var/www/vhosts/example.com/httpdocs更远。我知道我受限于open_basedir,因为价值仍然是httpdocs/[folder]/htmlphpinfo()但是对于我的生活,我无法改变当地的价值!尝试在文档根目录外包含文件(Plesk 10)

这是我到目前为止已经试过: 我已经看到了这一点 - How to include file outside document root? - 创造了“vhost.conf”是STIL坐在conf目录下,重新配置文件,重新启动Apache的...什么都没有。这是一个很好的帖子,但似乎有点过时了。

我编辑php.ini文件本身open_basedir = '/var/www/vhosts/example.com/httpdocs,上传它备份到它在哪里,重新配置,重新启动 - 没有什么

我掏出“的httpd.conf”从其他的conf添加相同的行编辑它文件,(vhost.conf),把它放回 - 没有,然后我试图做什么godaddy在这里说 - http://help.godaddy.com/article/1616并添加行php_admin_value open_basedir none' to 'httpd.conf - 没有运气。

现在是0435,我几乎可以睁大眼睛 - 这个网站将于明天在2000年推出!预先感谢任何愿意/能够阅读和/或帮助的人。

更新:感谢快速反应,这里是最好的答案,我可以给你:

它是否给你一个错误?

是的,我得到了一个服务器错误,并通过我的服务器错误日志,具体如下:

PHP的警告:要求()[function.require]:实际上open_basedir的限制。文件(/ var/www/vhosts/[example.com]/httpdocs/[文件夹]/[安全php文件存在的文件夹]/[file.php])不在允许的路径内:

所以我99.99%肯定是因为open_basedir的限制。

你确定你的网络服务器被设置为虚拟主机的所有者吗?

我敢肯定,我有点新的控制服务器,我真的不知道这意味着什么究竟,但我通过Godaddy的虚拟专用服务器,运行的Parallels Plesk v10.3.1,我做上面的文件移动通过Shell SSH。

在Plesk中,我可以将'Document root'更改为任何低于/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';

如果我正确认识你,我没有使用服务器的整个路径。

+0

它给你一个错误?你确定你的网络服务器设置为虚拟主机/ ?你是否尝试使用相对或绝对路径? – SeanNieuwoudt 2011-12-18 09:53:40

+0

不幸的是,Plesk是由一些对网站知之甚少的人设计的。您的文件必须位于公共目录树下或专用目录下(现在允许PHP访问专用目录)。 – 2011-12-18 17:38:08

+0

是的,检查我做的最后一次更新,我解决了原始问题,但由于某种原因,服务器跳过了我所有的嵌入文件(css,js,php,图像,视频)。我甚至将'open_basedir'设置为'none',但它仍然忽略它们,所以它不再是'open_basedir'问题。我在index.php上看到了所有我的无格式html,但是我没有收到任何错误,我的脚本'需要'一堆文件!在php.ini..ugh中必须打开或关闭一些东西! – phpKid 2011-12-18 17:57:07

回答

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 /本地/ PSA /管理/ sbin目录/ httpdmng --reconfigure-所有

/etc/init.d/httpd停止

/etc/init.d/httpd开始

但现在我有一个新的问题。然而,当

/var/www/vhosts/[my.domain]/httpdocs/[folder]/html

没有任何错误:“文档根目录”指向正确的文件夹服务器得到: require '../[folder]/[file.php]';

它跳过它就像它甚至没有!不给我一个错误消息或任何东西。它也跳过我所有的嵌入式css文件,js文件,图像,视频......它不会进入任何目录!我有一种感觉,这是一个'php.ini'设置或Plesk正在做的奇怪事情。

已解决:最后一个问题是因为我从来没有在根目录下访问文件。 PHP允许超出根目录,但不能这样做: src="../img/imagefile.jpg"

in HTML。

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