2014-07-21 51 views
0

執行命令行外部PHP腳本我有一個名爲external.php外部PHP腳本,其中包括這樣的:如何從你的瀏覽器

<?php 
echo 'External Output'; 
?> 

當我運行與命令的命令行:

php external.php 

我得到輸出爲

External Output 

但是,當我從我的額頭執行相同的腳本SER的命名index.php PHP文件其中有這樣的代碼:

<?php 
$exe=exec('php external.php',$out,$ret); 
print_r($out); 
?> 

然後我沒有得到任何輸出。

當我修改爲:

<?php 
$exe=exec('php external.php 2>&1',$out,$ret); 
print_r($out); 
?> 

然後我得到這樣的輸出:

php: /opt/lampp/lib/libxml2.so.2: version `LIBXML2_2.9.0' not found (required by php) 

我的問題是,我怎麼能執行一個 「external.php」,在命令行從文件index.php並在我的瀏覽器(即在index.php)上獲得輸出?我也嘗試過system()函數,但它不工作。

編輯: 我不能include在index.php中的external.php因爲external.php可能需要大量的時間來執行(超過10小時)。

編輯#2 解決了它,給PHP的完整路徑解決了這個問題。

下面是一個例子:

<?php 
$exe=exec('full/path/to/php /full/path/to/external.php',$out,$ret); 
print_r($out); 
?> 

三江源奧列格和Scopey給我一些暗示的幫助。

+1

爲什麼你不只是'include()'另一個php文件? – serakfalcon

+0

,因爲我需要從命令行執行它,而不是瀏覽器,因爲它可以運行多達幾天... –

+0

我不知道爲什麼你使用exec來運行一個php文件。使用包含或要求。 – davidxd33

回答

1

指定external.php的完整路徑:

<?php 
$exe=exec('php /full/path/to/external.php',$out,$ret); 
print_r($out); 
?> 

也嘗試指定的完整路徑到PHP在命令行上,並檢查它的工作原理:

$/usr/bin/php "/full/path/to/external.php" 

如果這樣的作品,嘗試它也在你的php文件中:

<?php 
$exe=exec('/usr/bin/php /full/path/to/external.php',$out,$ret); 
print_r($out); 
?> 
+0

仍然是一樣的錯誤 –

+0

@CandiceWilliams - 奇怪。在我的回答中增加了另一個可能的修復只是在這裏猜測,因爲我不能重現錯誤。 – Oleg

+0

是完整路徑的工作。謝謝。 –

0

嘗試從命令行運行phpinfo() lin即通常PHP的安裝使用不同的PHP.ini進行CLI使用。運行phpinfo()將顯示正在使用的ini文件的位置。看起來好像這個ini可能沒有爲你的安裝配置正確(作爲猜測)