2

是否可以在不访问 include_path 目录的情况下安装和使用 ZF(+ 其控制台工具)?我尝试将 ...Zend/library 目录添加到 include_path 但没有成功。

我是这样做的:

php -r 'set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/.../Zend/library")';

var_dump获取上面函数的结果后,它返回了旧的 include_path,这应该意味着成功。但是下一次调用 get_include_path() 也返回了路径。

我也尝试设置环境变量:

ZF_INCLUDE_PATH_PREPEND="/var/www/.../Zend/library"

在旧的 include_path 目录中有我们公司的框架,所以我不能(即使我不应该)在那里复制 ZF 库。

我认为一个合适的框架不应该像 include_path 那样依赖任何全局 PHP 设置。我认为应该可以在 ZF 内部配置文件中的某处设置包含路径。

编辑:
我添加set_include_path('/var/www/.../Zend/library')到 zf.php 文件中,该工具停止抛出“错误的 include_path”错误。事实上,它停止打印任何输出。执行命令zf create project test时它什么也不做。~/.zf 文件夹未创建。

4

2 回答 2

4

如果您无法在某些“全局”包含路径中复制 zf 库,例如/usr/share/php/,您仍然可以将其复制到项目所在的位置并zf从那里启动该工具。文件夹结构如下:

/var/www/zf_tool
                `/bin/
                      `zf.sh
                      `zf.php
                `/library
                      `/Zend

复制Zend库下的文件夹zf.shzf.php脚本,如果它们还没有bin,则将它们设置为可执行。chmod a+x zf.sh zf.php接下来,如果您运行/var/www/project/bin/zf.sh它,它将在 include_path 中查找 zf 文件,但如果它不存在,它将向上一个文件夹并进入该library文件夹。仅当在那里找不到 zf 库时,它才会因错误而死。最后,创建一个新的 zf 项目很简单:

$ pwd
/var/www/zf_tool/bin
$ ./zf.sh create project /var/www/test_project

而已。HTH :)

于 2010-01-23T13:32:28.663 回答
1

使用他的 set/get include_path 函数只会在“请求”的生命周期内设置它,因此一旦命令/Web请求完成,它就会恢复正常。至于为您的本地副本设置包含路径,您可以在尝试时在环境变量中或在~/.zf盒子上的文件夹中执行此操作。那里有配置,并且有一个设置cor包含路径。

除此之外,您还可以在php -r ...直接执行的 shell 脚本中添加类似的内容,尽管这不是推荐的方式。

于 2010-01-18T21:16:42.767 回答