2012-07-24 58 views
0

文件displaypage.php看起來是這樣的:PHP文件給exec()的另一個PHP文件,並使用返回的數據

<?php 

exec("php filetoexecute.php 2>&1",$output); 
print_r($output); 

?> 

文件filetoexecute.php看起來是這樣的:

<?php 

echo "test data"; 

?> 

的我的$ output數組中只有一個是PHP_FCGI_CHILDREN is not valid,我在網上沒有得到太多的幫助。我知道爲什麼它在那裏,我將STDERR重定向到STDOUT,但爲什麼文本test data沒有寫入數組?

我知道它會工作,只要我不想檢索輸出。在filetoexecute.php的代碼將正確執行(比方說,我把它寫的東西到一個數據庫)如果displaypage.php行看起來是這樣的:

exec("php filetoexecute.php >/dev/null"); 

這當然是因爲輸出被傾倒到無所事事。

我這樣做是因爲我需要filetoexecute.php在不同的php會話cookie下操作,而不是調用它的文件。我不能只交換由filetoexecute.php處理的幾行代碼。我需要知道filetoexecute.php的結果是什麼,這就是爲什麼我需要它產生的數據。

此外,passthru()似乎並沒有幫助我。

最後,我還沒有想過使用exec()或passthru(),想要完成我想要的東西的提示將不勝感激!

+0

簡單地使用文件或流與父進程交談可能更簡單(對於您的情況,使用'displaypage.php')。 – uzyn 2012-07-24 03:25:39

+0

@Patrick我運行您的程序在我的本地主機上,並正確輸出「Array([0] => test data)」作爲結果...帶有error_reporting(E_ALL); – swapnesh 2012-07-24 03:30:08

+0

@uzyn你可以擴展一下嗎?我不確定你的意思是什麼...... – Patrick 2012-07-24 03:32:09

回答

0

經過多次實驗,我發現了一些可行的方法。我不明白,但因爲我不熟悉的CLI,真的沒有多大的用處是,但這裏是什麼在起作用:

displaypage.php

<?php 

$returnedData = exec("php filetoexecute.php &"); 

echo $returnedData; 

?> 

無論出於何種原因,最後的和號是導致exec()返回被調用頁面輸出的內容的原因。我不知道這是否是實現這一目標的最佳方式,但它現在對我有用。如果您有更好的做法,我很樂意知道。

相關問題