php 环境中 include_path设置 PHP的包含文件路径
使用include()或require() 这类函数时,程序首先以include_path设置的路径作为参考点去找文件,
如果找不到,则以程序自身所在的路径为参考点去找所要的文件,如果都找不到,则出错.
问题出现了,如果某个项目和环境中同时有相同的目录 如require_once( "adodb/adodb.inc.php" );
程序有可能出错,因为程序搜索的路径和php.ini中设置的include_path路径有关,这时要用set_include_path 或ini_set 来明确指定运行时的搜索路径参考点
// 自 PHP 4.3.0 起可用
set_include_path('/usr/lib/pear');
// 在所有版本的 PHP 中均可用
ini_set('include_path', '/usr/lib/pear');
下面以安装smarty为例:
假设文件放在了/usr/lib/pear/Smarty下。
1、找到你的php.ini配置文件修改php.ini的include_path选项,把smarty的库文件路径加上,比如:
include_path = "/usr/lib/pear/Smarty/libs"
php.ini中一共有两处include_path,一处是Unix下使用的,一处是windows下使用的
; Windows: "path1;path2"
;include_path = ".:/php/includes"
修改为:
; Windows: "path1;path2"
;include_path = "D:wwwSmartylibs"
; Unix: "path1;path2"
;include_path = ".:/php/includes"
修改为:
; Unix: "path1;path2"
;include_path = "/usr/lib/pear/Smarty/libs"
保存即可,可以设置多个,用";"格开。
2、载入Smarty库
如果在php.ini设置了include_path为/usr/lib/pear/Smarty/libs, 可以直接用include("Smarty.class.php");
不设置include_path,可以直接把Smarty.class.php拷到网站目录,可用相对路径或用绝对路径如include("/usr/lib/pear/Smarty/Smarty.class.php");
设置include_path对包函文件Smarty.class.php比较简便,不用写一大串的路径