是否可以在不访问include_path direcotory的情况下安装和使用ZF(+其控制台工具)?我已经尝试将... Zend / library direcotry添加到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文件夹。
答案 0 :(得分:4)
如果您无法在某些“全局”包含路径中复制zf库,例如/usr/share/php/
,您仍然可以将其复制到项目所在的位置,然后从那里启动zf
工具。文件夹结构如:
/var/www/zf_tool
`/bin/
`zf.sh
`zf.php
`/library
`/Zend
将Zend
文件夹复制到库下,将zf.sh
和zf.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:)
答案 1 :(得分:1)
使用set / get include_path函数只会在“请求”的生命周期内设置它,所以一旦命令/ web请求完成,它就会恢复正常。至于为本地副本设置包含路径,您可以在尝试的环境变量中或在框中的~/.zf
文件夹中执行此操作。那里有配置,有一个设置cor包括路径。
除此之外,您还可以将php -r ...
中的内容添加到您直接执行的shell脚本中,尽管这不是推荐的方法。