【问题标题】:Correct path to file in LiteSpeed web server on LinuxLinux 上 LiteSpeed Web 服务器中文件的正确路径
【发布时间】:2013-05-28 09:42:55
【问题描述】:

我将以下 PHP 脚本放置在我的虚拟主机服务器的根目录中,它运行良好。

<?php
include(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');

当我将脚本移动到我的 Web 根目录下的新文件夹(即 public_html/myfolder)时,脚本会出现以下错误:

Warning: include(/home/name/public_html/folder/config/config.inc.php) [function.include]: failed to open stream: No such file or directory in /home/name/public_html/folder/test.php on line 2

Warning: include() [function.include]: Failed opening '/home/name/public_html/folder/config/config.inc.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/name/public_html/folder/test.php on line 2

Warning: require_once(/home/name/public_html/folder/init.php) [function.require-once]: failed to open stream: No such file or directory in /home/name/public_html/folder/test.php on line 3

Fatal error: require_once() [function.require]: Failed opening required '/home/name/public_html/folder/init.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/name/public_html/folder/test.php on line 3

我是否应该按如下方式更改路径:

<?php
include(dirname(__FILE__).'/../config/config.inc.php');
require_once(dirname(__FILE__).'/../init.php');

我说的对吗?

【问题讨论】:

  • 我敢打赌自己尝试会更容易。无论如何,包含所需的那些文件在哪里?当您包含某些内容时,您只需检查包含的文件是否确实存在 :)
  • 它工作,但我想确定我是正确的。文件位于:public_html/config/config.inc.phppublic_html/init.php
  • echo dirname(__FILE__); 输出给你什么?

标签: php linux include-path litespeed


【解决方案1】:

嗯,您说您只是将脚本(包含include 行的脚本)移动到“public_html/folder”。这样,dirname(__FILE__) 包含完整路径,包括“文件夹”目录。所以,现在,你需要在目录树上上一层,才能到达“config”目录;解释如下:

之前:

/home/name/public_html/config/config.inc.php
/home/name/public_html/init.php

所以你的文件

/home/name/public_html/test.php

设法使用来自dirname(__FILE) 的路径访问文件。但是现在,test.php 已经被移到了“文件夹”目录下:

/home/name/public_html/folder/test.php

因此,dirname(__FILE__) 应该返回“文件夹”目录的综合路径。但是您需要包含的文件位于“旧”目录中,因此您需要将 ../ 添加到包含的路径中,以便能够访问这些文件:)

【讨论】:

  • echo dirname(__FILE__); 输出来自根目录 /public_html:/home/name/public_html 和来自 public_html/folder:/home/name/public_html/folder。那么我应该使用上面提到的路径还是:include(dirname(__FILE__).'../config/config.inc.php');require_once(dirname(__FILE__).'../init.php');
  • 当然,我在回答中对此进行了解释。如果不清楚,请告诉我:)
  • 添加../ before斜线或inside斜线,即哪个是正确的,Nr 1) 或 Nr 2)? 1)require_once(dirname(__FILE__).'../init.php'); 2)require_once(dirname(__FILE__).'/../init.php');
  • 应该给出斜线,就像你在include(dirname(__FILE__).'/config/config.inc.php');中所做的那样:实际上,..只不过是一个目录,就像“config”或“folder”一样。同样的规则适用:)
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多