【问题标题】:Ubuntu Zend Framework cli securityCheck ErrorUbuntu Zend Framework cli securityCheck 错误
【发布时间】:2011-01-21 08:29:13
【问题描述】:

我遵循了所有的指示。我在 Ubuntu 10.10 上。使用 Zend Server Ce。

在我的 .bashrc 中,我有 ld_library_path、zend 框架库等。

我可以运行 zf,但它给出了一个错误:

 Fatal error: Uncaught exception 'Zend_Exception' with message 'Security check: Illegal character in filename' in /usr/local/zend/share/ZendFramework/library/Zend/Loader.php:303
Stack trace:
#0 /usr/local/zend/share/ZendFramework/library/Zend/Loader.php(128): Zend_Loader::_securityCheck('Zend/Tool/Proje...')
#1 /usr/local/zend/share/ZendFramework/library/Zend/Loader.php(94): Zend_Loader::loadFile('Zend/Tool/Proje...', NULL, true)
#2 /usr/local/zend/share/ZendFramework/library/Zend/Tool/Project/Context/Repository.php(88): Zend_Loader::loadClass('Zend_Tool_Proje...')
#3 /usr/local/zend/share/ZendFramework/library/Zend/Tool/Project/Context/Repository.php(79): Zend_Tool_Project_Context_Repository->addContextClass('Zend_Tool_Proje...')
#4 /usr/local/zend/share/ZendFramework/library/Zend/Tool/Project/Provider/Abstract.php(85): Zend_Tool_Project_Context_Repository->addContextsFromDirectory('/usr/local/zend...', 'Zend_Tool_Proje...')
#5 /usr/local/zend/share/ZendFramework/library/Zend/Tool/Framework/Provider/Repository.php(187): Z in /usr/local/zend/share/ZendFramework/library/Zend/Loader.php on line 303

如果我评论 Zend_loader 303 行,它似乎可以工作,但如果我尝试创建控制器或其他东西,它会给出如下错误:

[ 21.01.2011 10:26:40 ERROR] [ ZendExtensionManager.cpp : 654 ( sig_handler ) ] ZendExtensionManager got SIG 11 at pid 4781 ! 
[ 21.01.2011 10:26:40 ERROR] [ ZendExtensionManager.cpp : 667 ( sig_handler ) ] Crash happened during IDLE stage 
[ 21.01.2011 10:26:40 ERROR] [ ZendExtensionManager.cpp : 670 ( sig_handler ) ] The stack trace follows: 
[ 21.01.2011 10:26:40 SYSTEM] Obtained 20 stack frames 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/ZendExtensionManager.so(+0x21c1e) [0xb718fc1e] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/ZendExtensionManager.so(+0xf0b7) [0xb717d0b7] 
[ 21.01.2011 10:26:40 SYSTEM] [0xb78d3400] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x81ccc07] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x830e044] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x82e2961] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php(execute+0x212) [0x82e4032] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/debugger/php-5.3.x/ZendDebugger.so(+0x4bed6) [0xb2c72ed6] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x830daef] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x82e2961] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php(execute+0x212) [0x82e4032] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/debugger/php-5.3.x/ZendDebugger.so(+0x4bed6) [0xb2c72ed6] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x830daef] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x82e2961] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php(execute+0x212) [0x82e4032] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/debugger/php-5.3.x/ZendDebugger.so(+0x4bed6) [0xb2c72ed6] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x830daef] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php() [0x82e2961] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/bin/php(execute+0x212) [0x82e4032] 
[ 21.01.2011 10:26:40 SYSTEM] /usr/local/zend/lib/debugger/php-5.3.x/ZendDebugger.so(+0x4bed6) [0xb2c72ed6] 
Segmentation fault

我该如何解决这个问题?

【问题讨论】:

    标签: zend-framework ubuntu command-line-interface zend-server-ce


    【解决方案1】:

    我了解错误是如何发生的。

    我的操作系统对文件名使用 utf8 字符编码。终端运行的带有 php 的 utf8 编码文件名给出了错误。 'I' 是我的语言中的上层 'ı'。但是 php 期望是 'i'。如果我在 php 中使用 iconv 将文件名更改为 ASCII ,则会再次发生错误,因为此时它无法找到文件的位置。我找到了问题的原因,但仍然不知道解决方案。

    谢谢。

    【讨论】:

      【解决方案2】:

      我相信这不是 ZF 的问题。这要么是 php 错误,要么是配置错误。

      在 Zend_Loader 中替换并在此处发布输出,以便我确认我的怀疑

      protected static function _securityCheck($filename)
      {
          var_dump($filename); exit;
      }
      

      也试试这个:

      mb_internal_encoding('UTF-8');
      mb_regex_encoding('UTF-8');
      

      对不起,如果我错了。我不是这里的专家。

      【讨论】:

      • var_dump 给出该文件名 => Zend/Tool/Project/Context/Zf/PublicIndexFile.php 哪个文件包含 I 字符。我粘贴了您提供的 mb_string 函数,就在 if (preg_match('/[^a-z0-9\\/\\\_.:-]/i', $filename)) { 没有任何变化的上方。谢谢。
      • 我使用默认的 zend 服务器 ce 配置。所以我认为没有任何配置问题。有什么建议吗?
      • 顺便说一句,我的项目在浏览器中运行没有任何问题。但我不能使用任何 zf 工具的优势。
      • 我不是一个有经验的 linux 用户,所以我帮不了你。对不起。但我可以肯定地说:这不是框架问题。
      【解决方案3】:

      在 zf.sh 中,您必须在 if test "@php_bin@" != '@'php_bin'@'; then 行之前添加,

      LANG=C
      export LANG
      

      现在一切正常,我很高兴...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-15
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多