1

我收到错误

Warning: fopen() [function.fopen]: open_basedir restriction in effect. File(/) is not within the allowed path(s): (VIRTUAL_DOCUMENT_ROOT:/tmp/) in /www/elitno.net/s/p/anger2/home/site/classWebPage.php on line 83

我的 phpinfo 文件在这里 -> http://spaceranger2.elitno.net/phpinfo.php

发生错误的行在这里:

function openLink(){
    $this->fp = fopen($this->URL, "rb");
    array_shift($http_response_header);
    $this->headers = $http_response_header;
}

我只能访问 .htaccess 但不能访问我的 php.ini 文件;我试过用这个

open_basedir = "VIRTUAL_DOCUMENT_ROOT:/tmp/:/www/elitno.net/s/p/ranger2/home/site/"

但这会产生500 internal error,有什么建议吗?

4

1 回答 1

0

通常fopen只允许打开运行脚本的用户有权访问的文件。

你已经设计了你的函数openLink()来实际打开一个特定的 URL。您应该注意,使用fopen它时实际上表示打开磁盘上的文件。如果您传递类似的值,/或者/filename.txt它实际上会尝试在磁盘上的该绝对文件系统路径上打开文件。

从您告诉fopen打开的问题数据中/。那是服务器文件系统的根目录。您的用户肯定无法访问它(因此您看到的错误)。

如果要打开网站的相对路径,请考虑在将站点 URL 传递给$this->URL变量之前将其作为前缀,fopen以表明您正在尝试打开 URL。

您可以在以下几行中执行某些操作:

function openLink(){
    $siteURL = "http://www.example.com";
    $urlToOpen = $siteURL . $this->URL;
    $this->fp = fopen($urlToOpen, "rb");
    array_shift($http_response_header);
    $this->headers = $http_response_header;
}
于 2012-12-24T07:25:16.500 回答