1

我遵循了所有說明。我在Ubuntu 10.10上。使用Zend Server Ce。Ubuntu Zend Framework cli securityCheck錯誤

在我的.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 

我怎樣才能解決這個問題?

+0

沒有人知道這是爲什麼? – ONSC 2011-02-01 10:54:19

回答

0

在zf.sh必須添加之前if test "@[email protected]" != '@'php_bin'@'; then線,

LANG=C 
export LANG 

一切現在的工作,我很高興......

0

我明白錯誤是怎麼發生的。

我的操作系統使用utf8字符編碼作爲文件名。 utf8編碼的文件名與php是由終端運行給出的錯誤。 'I'是upper one'ı'用我的語言。但PHP預計是''。如果我在php中使用iconv將文件名更改爲ASCII,則錯誤再次發生,因爲此時無法找到文件的位置。我找到了問題的原因,但仍然不知道解決方案。

謝謝。

0

我相信這不是ZF問題。這是PHP的錯誤或配置錯誤。

代替那麼Zend_Loader並張貼在這裏輸出,所以我可以證實我的懷疑

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

也試試這個:

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

很抱歉,如果我錯了。我不是這裏的專家。

+0

var_dump給出該文件名=> Zend/Tool/Project/Context/Zf/PublicIndexFile.php哪個文件包含I字符。 我粘貼了你給出的mb_string函數,剛好在if(preg_match('/ [^ a-z0-9 \\/\\\\ _。: -/i',$ filename)){ 沒有任何改變。 謝謝。 – ONSC 2011-02-08 10:03:22