【问题标题】:Zend include_once(myphpfile): failed to open stream: No such file or directoryZend include_once(myphpfile):打开流失败:没有这样的文件或目录
【发布时间】:2016-07-10 08:24:23
【问题描述】:

这个问题把我逼疯了。我知道已经提交了类似的问题,但没有适合我的解决方案

我收到此错误:

警告:include_once():打开失败 'Recruit/Model/DbTable/Volontari.php' 用于包含 (include_path='/var/www/html/fabio/recruit/application/../library:/var/www/html/fabio/recruit/library:.:/usr/share/pear:/usr/share/php ') 在 /usr/share/php/Zend/Loader.php 中

但实际上文件存在于服务器上。这是我的文件夹树的一部分

source
  |__application
        |_ ....
  |__library
        |__Recruit
             |__Forms
             |   |__VolontariCreate.php
             |__Model
                 |__DBTable
                       |__Volontari.php

Form VolontariCreate.php 有效,所以我认为它找不到路径。

我还检查了包含路径 echo get_include_path(); 他们是正确的

如果有帮助,客户端是Ubuntu,服务器是Centos,zend版本是1.12.17dev

感谢您的支持。

【问题讨论】:

  • “Recruit”文件夹在哪里?它在文件字符串中,但不在树中。是招聘你的申请吗?看起来您可能需要在路径中添加额外的“../”。自动加载器在命名空间/类加载器上寻找大写“R”时也可能出现问题
  • 是的,招募是我的申请。抱歉,树中缺少 Recruit 文件夹,我已编辑。现在树是正确的。在 application.ini 中,我声明了命名空间“Recruit_”。
  • 尝试转储 __DIR__ 以查看您在实际文件树中的位置。
  • 好的。我今晚会试试(我现在在上班)
  • 错误是路径名与类名不同

标签: php zend-framework


【解决方案1】:

我相信您的问题是 linux/unix 文件系统区分大小写。在运行 Windows 的服务器上,您可以摆脱任何您喜欢的文件大小写,因为它们不区分大小写。因此,您的要求包括:

Recruit/Model/DbTable/Volontari.php

会失败,因为实际路径应该是:

Recruit/Model/DBTable/Volontari.php

注意 DB 中的大写 B...

【讨论】:

  • 是的,这就是问题所在!类名是 Recruit_Model_DbTable_Volontari,而路径是 Recruit_Model_DBTable_Volontari。谢谢!
猜你喜欢
  • 2018-08-30
  • 2018-03-26
  • 2022-10-16
  • 2018-03-01
  • 2013-10-27
  • 2013-01-24
  • 2018-12-01
  • 1970-01-01
  • 2017-03-01
相关资源
最近更新 更多