1

好的,我已经尝试了一切,这似乎是迄今为止最好的地方,我想在这里创建 Document Roothttpdocs/[folder]/html并且我有 php 包含文件,我想在根目录之上(require '../[folder]/file.php']但无法访问超过/var/www/vhosts/example.com/httpdocs. 我知道我受到限制,open_basedir因为价值仍然存在httpdocs/[folder]/htmlphpinfo()但对于我的生活,我无法改变当地的价值!

这是我到目前为止所尝试的:我已经看到了 -如何在文档根目录之外包含文件?- 并创建了一个仍然位于 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 限制生效。文件(/var/www/vhosts/[example.com]/httpdocs/[folder]/[存在安全 php 文件的文件夹]/[file.php])不在允许的路径内:

所以我有 99.99% 的把握是因为 open_basedir 限制。

您确定您的网络服务器设置为 vhosts/ 的所有者吗?

我很确定,我对控制服务器有点陌生,我真的不知道这到底意味着什么,但我通过 Godaddy 有一个虚拟专用服务器,运行 Parallels Plesk v10.3.1,我做了上面的文件移动通过外壳 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';

如果我理解正确,我没有使用服务器的整个路径。

4

1 回答 1

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 停止

/etc/init.d/httpd 启动

但是我现在遇到了一个新问题。“文档根目录”指向正确的文件夹:

/var/www/vhosts/[my.domain]/httpdocs/[文件夹]/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这将是下一个版本中的一个选项,所以在那之前是破解时间!!

于 2011-12-18T19:52:22.190 回答