2010-02-28 55 views
12

自從啓用XDebug以來,我一直在命令行中運行基於PHP的實用程序時出現了一些問題。它通過一個瀏覽器中執行腳本時運行得很好,但一旦我嘗試在命令行上執行腳本,它拋出以下錯誤:PHP僅在命令行模式下拋出XDebug錯誤

h:\www\test>@php test.php 
PHP Warning: PHP Startup: Unable to load dynamic library 'E:\development\xampplite\php\ext\php_curl.dll' - The specified module could not be found in Unknown on line 0 
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 

h:\www\test> 

腳本運行後這只是罰款,但它的東西我可以似乎沒有把我的頭包裹起來。它可能是我的php.ini配置中的路徑問題?我不確定是否考慮到這種情況,無論我在哪裏訪問@php環境變量,都會拋出相同的錯誤。

此外,我的php.ini中的所有路徑都是絕對的。不確定這裏發生了什麼事。

+0

這聽起來像是多個php.ini的情況,而CLI界面使用不同的界面。你可以用'phpinfo()'來查看哪個文件被使用了嗎? – 2010-02-28 12:05:21

回答

22

機會是使用兩個不同的.ini文件:

  • 一個由Apache的
  • 使用
  • ,另一個是CLI

或者,也許你有PHP同樣的問題被Apache使用,但沒有看到該警告,因爲它在Apache的錯誤日誌中 - 並且它只是一個警告。


溶液,基本上是使用以加載Xdebug擴展:的

zend_extension=/.../xdebug.so 

代替:

extension=/.../xdebug.so 

這正是該錯誤消息指示:Xdebug MUST be loaded as a Zend extension- 除了它並沒有告訴你如何做到這一點。


注:

  • 我使用絕對路徑來xdebug.so - 你已經這樣做,這是很好的(它無論如何都需要)
  • 但我也使用zend_extension:Xdebug是一個深入PHP的Zend引擎的擴展,這意味着使用extension是不夠的。

有關更多信息和作爲​​參考,請參閱Xdebug文檔中的Installation/activation頁面。

+0

另請注意,根據上面的說明和安裝文檔,您應該使用'zend_extension'而不是'zend_extension_ts'來獲取最新版本的PHP。我見過很多地方都推薦過zend_extension_ts。參考:http://xdebug.org/docs/install – RightHandedMonkey 2013-08-07 19:49:38

+1

Windows用戶的腳註:xdebug的路徑必須是引號中的完整路徑(例如''zend_extension =「C:\ Program Files \ ...」 ) – 2015-04-10 11:06:37