Php 是否使用CLI为子目录设置_include_path()?

Php 是否使用CLI为子目录设置_include_path()?,php,zend-framework,command-line-interface,autoload,include-path,Php,Zend Framework,Command Line Interface,Autoload,Include Path,我正在应用程序中使用Zend Framework 1.11。我正在尝试实现,以消除不必要的require_once()语句并完全自动加载。这在正常应用中工作良好 我还为一个守护进程编写了一个CLI接口(通过Bootstrap.php中的自定义路由器),它似乎不想很好地处理我的更改。它与我设置的include路径有关,该路径当前在我的index.php ZF入口点中配置: set_include_path(implode(PATH_SEPARATOR, array( realpath(APP

我正在应用程序中使用Zend Framework 1.11。我正在尝试实现,以消除不必要的require_once()语句并完全自动加载。这在正常应用中工作良好

我还为一个守护进程编写了一个CLI接口(通过Bootstrap.php中的自定义路由器),它似乎不想很好地处理我的更改。它与我设置的include路径有关,该路径当前在我的index.php ZF入口点中配置:

set_include_path(implode(PATH_SEPARATOR, array(
   realpath(APPLICATION_PATH . '/../library/'),
   get_include_path(),
)));
库文件夹的布局如下所示:

- library
   -Zend
      -Acl
      -Amf
       ... etc, Zend Framework files
   -Custom
      -Api
      -Twitter
       ... etc, My Custom library files
通过CLI运行应用程序时,在这些目录或子目录中找不到任何文件。因此,我将包含路径更改为:

set_include_path(implode(PATH_SEPARATOR, array(
   realpath(APPLICATION_PATH . '/../library/'),
   realpath(APPLICATION_PATH . '/../library/Custom/Twitter/'),
   get_include_path(),
)));
然后它就能找到我需要的文件

TL;博士我在这些库中有很多文件,如果我必须手动将每个文件夹放入include路径,那么从自动加载中获得的任何性能提升都将消失。有更好的办法吗


顺便说一句,我一时兴起,也尝试了一种类似/../library/*的方法,但也不起作用

为什么CLI脚本找不到以前安装的文件?您会遇到什么错误?
PHP致命错误:在/var/www/…
中找不到类'Someclass',而不是自动加载该类,它只是失败了。我找到了一个临时解决方案,在这里我只在CLI启动中添加必要的路径。这样,常规应用程序不会受到影响,因为它可以按原样工作。这只是一个细微差别,我不确定原因。错误应该包括它正在检查的路径(即,您的包含路径)-因此,看看这是否正确。您肯定能够在CLI应用程序中以相同的方式自动加载。需要补充的是,CLI版本的PHP有一个单独的PHP.ini文件,因此有一个单独的include_path config选项。如果在php.ini中设置include路径,则可能需要在两个位置进行设置。与直接使用require_一次相比,自动加载速度较慢。