PHP fopen错误 - 在实时服务器上工作但在测试服务器上失败

时间:2015-01-24 19:57:52

标签: php xampp

我是PHP和初学程序员的新手。我已经在这个问题上苦苦挣扎了四天,我终于在这里发布了我的第一个问题以寻求帮助。

我已经在我的PC上使用XAMPP构建了一个测试环境,并且在本地开发PHP / HTML内容并将其直接放在我的托管公司的服务器上取得了很好的成功。

但是,当使用PHP fopen打开文本文件时,我遇到了一个问题。它在实时服务器上运行良好,但在测试服务器上无法在本地运行。我在测试服务器上收到此错误。

  

" ...无法打开流:没有这样的文件或目录......"

我尝试打开的文件存在于本地和实时服务器上,位于站点根目录的相同路径中。

我认为问题是由于托管服务器上文件的实际路径与测试服务器上的实际路径不同。我的托管服务器公司要求我在访问文件时使用特定路径来访问我网站的根目录。它是这样的: /home/users/web/b54321/moo.mysite

但是,到达我的测试域root的实际PC路径是c:/vhosts/mysite

我以为我之前已经找到了答案,因为我必须通过创建Alias来修改我的测试环境的httpd.conf文件中的<IfModule alias_module>部分。我尝试过,但没有成功。不确定我是否在正确的轨道上,但这是我尝试过的。

Alias /home/users/web/b54321/moo.mysite "C:\vhosts\mysite"

这不起作用,在阅读了更多详细信息后,这似乎只是针对URL而不是PHP文件路径。

非常感谢任何帮助。对不起,如果这是一个基本问题。我一直在寻找和尝试各种修复,没有解决方案。

以下是在实时服务器上运行但在测试服务器上失败的实际代码。请记住,气候&#39;是我网站根目录的第一级文件夹。

if ($_POST) {
$filename = '/home/users/web/b54321/moo.mysite/climate/noaa/NOAA reports '.$_POST["year"].'/'.$_POST["year"].'_'.$_POST["month"].'.txt';
 $fd = fopen ($filename, "r");

 $contents2 = fread ($fd,filesize ($filename));
 $contents = str_replace(" ","&nbsp",$contents2);

 fclose ($fd); 

1 个答案:

答案 0 :(得分:0)

您可以使用$ _SERVER [&#39; DOCUMENT_ROOT&#39;]但是如果您将代码放在不同的文件夹中,那么它就会中断。见下文

而不是你可以为文件夹根目录定义自己的变量。这样,当您将代码移动到新服务器时,只需更新变量,最好是在公共的config.inc.php文件中。

  

在服务器1上您将代码托管在类似的域中   http://www.mycoolsite.com/(使用Web服务器根目录)

     

$ _ SERVER [&#39; DOCUMENT_ROOT&#39;]会   &#39; /home/users/web/b54321/moo.mysite /&#39 ;;   $ folderroot =&#39; /home/users/web/b54321/moo.mysite /&#39 ;;

任何选项都可以很好地发挥作用。

在另一台机器上可能是

  

在服务器2上您在域和网址上托管您的代码   http://www.myotherwebsite.com/noaa_stuff/

     

$ _ SERVER [&#39; DOCUMENT_ROOT&#39;]   就像&#39; /home/users/web/ss22/moo.mytotherwebsite /&#39 ;;

     

但那不包括&#39; noaa_stuff&#39;文件夹

     

所以你设置

     

$ folderroot =&#39; /home/users/web/ss22/moo.mytotherwebsite/noaa_stuff /&#39 ;;

在服务器2上。您的DOCUMENT_ROOT系统可能会在查找文件时导致一些错误。但是将folderroot设置为确切的文件夹可以很容易。