Heim  >  Artikel  >  Backend-Entwicklung  >  分享:PHP中require或include时不使用相对路径

分享:PHP中require或include时不使用相对路径

WBOY
WBOYOriginal
2016-07-25 08:57:35970Durchsuche
  1. require_once('../../lib/some_class.php');
复制代码

这种写法的缺点: 它首先查找指定的php包含路径,然后查找当前目录。 因此会检查过多路径。 如果该脚本被另一目录的脚本包含,它的基本目录变成了另一脚本所在的目录。

另外一个问题就是:当定时任务运行该脚本,它的上级目录可能就不是工作目录了。

因此,最佳选择是使用绝对路径,例如:

  1. define('ROOT' , '/var/www/project/');
  2. require_once(ROOT . '../../lib/some_class.php');
复制代码

以上代码定义了一个绝对路径, 值被写死了。

下面,加以改进,路径 /var/www/project 也可能会改变, 那么每次都要改变它吗? 不是的,可以使用__FILE__常量,例如:

  1. define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME));
  2. require_once(ROOT . '../../lib/some_class.php');
复制代码

现在,无论移到哪个目录,如移到一个外网的服务器上,代码无须更改便可正确运行。 也就是用到了pathinfo与__FILE__常量,实现了可移植的代码。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn