2012-02-27 49 views
4

我試圖從C++程序調用PHP腳本。例如,這裏有一個例子C++程序:從C++程序調用PHP腳本

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main() { 

cout << std::system("test.php"); 

return 0; 
} 

這個程序調用一些腳本「test.php的」,這可能會像下面這樣的結構:

<?php 
echo "Hello"; 
?> 

當運行C++代碼,我得到以下內容:

sh: 1: test.php: not found. 

現在顯而易見的事情是檢查文件是否在相同的目錄(他們確實是),但錯誤仍然存​​在。任何關於我如何去做這樣的事情的反饋?

謝謝。

+3

如果沒有別的,它必須是'php test.php' – ceejayoz 2012-02-27 18:47:38

+0

Jeez,這是多麼愚蠢的錯誤。繼續並留下實際的回覆,我會確保選擇你的答案,以防其他人有同樣的問題。 (雖然由於簡單,這個問題也可能會被關閉)。 – 2012-02-27 18:49:43

+0

繼續前進,把點給別人,很高興我能幫上忙! :-) – ceejayoz 2012-02-27 18:51:45

回答

5

嘗試:

cout << std::system("php -f test.php"); 

如果你想執行一個PHP腳本作爲一個命令行腳本,你必須在你的第一行PHP腳本添加shebang行。像

#!/usr/bin/php 
2

除非文件被標記爲可執行文件,屬於PATH環境變量的目錄(或運行./test.php),並且必須指定運行腳本的程序(在您的情況下爲「php」家當。你必須使用system("php test.php")

這是因爲「sh」在PATH指定的目錄中搜索「test.php」,並且工作目錄通常不包含在PATH中。