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


Trying to Include Files outside of Document Root (Plesk 10)

好的,我已经尝试了一切,这是迄今为止看起来最好的地方,我想在这里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 这将是下一个版本的一个选项,所以在那之前是黑客时间!!