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

WBOY
풀어 주다: 2016-07-25 08:57:35
원래의
976명이 탐색했습니다.
  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__常量,实现了可移植的代码。



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!