2010-04-20 146 views
2

我需要爲PHP內部的PHP代碼運行PHP解析器。我在Windows上,我試過如何檢查PHP中的PHP文件代碼語法?

system("C:\\Program Files (x86)\\PHP\\php.exe -l \"C:/Program Files (x86)/Apache/htdocs/a.php\"", $output); 
var_dump($output); 

沒有運氣。參數-l應檢查正確的PHP語法,並在存在某些問題時拋出錯誤。基本上,我希望做同樣的事情到這樣的畫面:

alt text http://www.mpsoftware.dk/images/phpdesigner7/phpdesigner7-php-syntaxerror.png

也就是說,能在代碼檢測錯誤。

+0

什麼問題,你用-l選項面對? – codaddict 2010-04-20 12:44:17

+0

我沒有從php.exe獲得*任何反饋*我不知道爲什麼。 – Tower 2010-04-20 14:26:50

回答

2

這似乎工作:

<?php 

$file = dirname(__FILE__) . '/test.php'; 

//$output will be filled with output from the command 
//$ret will be the return code 
exec('php -l ' . escapeshellarg($file), $output, $ret); 

//return code should be zero if it was ok 
if ($ret != 0) { 
    echo 'error:'; 
    var_dump($output); 
} else { 
    echo 'ok'; 
} 
1

的runkit擴展提供了一個函數來做到這一點:

runkit_lint_file()

如果您不能使用runkit那麼你唯一的其他方法是做什麼你已經嘗試過:

echo passthru("php -l ".__FILE__); 

嘗試如果它不起作用,請使用realpath()修復您的路徑。