将文件“移动”到包含路径列表中意味着什么?

时间:2011-04-13 11:23:02

标签: php include-path

“Zend Framework”一书,初学者指南;它说:

library/目录的内容应移至PHP“include”中的某个位置 路径“列表。

我不明白。不包括引用特定位置中某个目录的路径保持值。这是什么意思?或者我是否必须将文件夹移动到“包含路径”中已经提到的位置?

2 个答案:

答案 0 :(得分:9)

PHP的include_path与系统的PATH环境变量具有相同的用途:

  

“它定义了在查找要执行的命令时要搜索的目录列表。” (Bob Rankin,2011)。

正如andre matos先前的评论所示,您可以将库目录复制到系统的PHP include_path目录,也可以在php.ini文件中设置PHP路径配置指令'include_path'以包含库目录作为PHP搜索的目录。

无论选择哪种方式,您都需要了解系统的PHP include_path目录。要查找系统的PHP include_path目录,您可以执行以下操作:

% php -i | grep include_path # assuming you are on Linux

- 或者,创建一个文件,例如'phpinfo.php',并添加以下php代码:

<?php phpinfo(); ?>

并通过PHP运行该文件,

% php phpinfo.php | grep include_path

- 或者,将文件(例如'phpinfo.php')添加到您的Web服务器知道的目录中,并在Web浏览器中将其作为URL打开并搜索“include_path”。

例如,我的系统的PHP include_path位于:/usr/lib64/php

虽然最简单的方法是将库目录复制到系统的PHP include_path目录(例如/ usr / lib64 / php),但在系统中设置PHP路径配置指令'include_path'也相当容易。 php.ini文件。

要在系统的php.ini文件中设置PHP路径配置指令“include_path”,请打开该文件,然后在“路径和目录”部分下找到“include_path”路径配置指令。看起来应该是这样的:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

删除';'来自您操作系统的PHP'include_path'路径配置指令。

例如,如果你在Linux上,它应该是这样的:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

然后将PHP'include_path'路径配置指令设置为库目录,作为PHP搜索的目录。

例如,我将ZendFramework下载到

/usr/src/done/ZendFramework-1.11.4-minimal/

因此,我必须设置PHP'include_path'配置指令,以在ZendFramework目录中包含库目录,如下所示:

include_path = ".:/usr/lib64/php:/usr/src/done/ZendFramework-1.11.4-minimal/library"

系统的php.ini文件中的“路径和目录”部分现在应如下所示:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
include_path = ".:/usr/lib64/php:/usr/src/done/ZendFramework-1.11.4-minimal/library"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

让我解释一下我在php.ini文件中添加到php'include_path'配置指令的目录(如上所示):

'。'是当前目录,'/ usr / lib64 / php'是系统的PHP include_path目录,而'/usr/src/done/ZendFramework-1.11.4-minimal/library'是该目录中的库目录。 ZendFramework目录。请注意,PHP'include_path'配置指令中列出的每个目录必须用':'分隔(与系统的PATH环境变量中列出的目录相同)。

将目录列表添加到php.ini文件中的PHP'include_path“配置指令后,必须重新启动Web服务器以将更改保存到PHP。

例如,% sudo apachectl restart # assumes you are using Apache as your web server

希望这有帮助,

//。埃利奥特

答案 1 :(得分:1)

嗯......你可以做到这两点。

php.ini添加包含路径(搜索include_path

之类的内容
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = ".;C:\PHP\pear;C:\PHP\otherfolder"

或者将文件夹移动到已经包含的某个路径(您将知道在php.ini上执行上一次搜索之后是哪些路径)。

当您执行以下操作时:

<?php include 'file.php'; ?>

如果文件与您正在执行的脚本不在同一目录(。)中,则php将查看php.ini上定义的包含路径。