2009-12-10 92 views
0

我對PHP系統函數有一個奇怪的行爲。在這個PHP腳本只有2個指令(其餘爲純HTML):PHP系統函數奇怪的行爲

<?php echo system('cgi-bin/gallery2/galleryheaderview.cgi'); ?> 
<?php echo system('cgi-bin/gallery2/galleryview.cgi'); ?> 

第一CGI只返回一行,你可以在這裏查看 http://reboltutorial.com/cgi-bin/gallery2/galleryheaderview.cgi

它返回

我的相冊

但整個PHP腳本兩次返回我的相冊:

我的相冊 我的相冊

http://reboltutorial.com/gallery2.php

是否有一個原因(我不使用我的課程的第二CGI腳本庫看到http://reboltutorial.com/cgi-bin/gallery2/galleryview.cgi),以及如何防止這種情況?

謝謝。

回答

4

更新system函數會做兩件事。首先,它會運行一個命令並將其輸出傳遞給瀏覽器和/或輸出緩衝區。第二個是它會返回最後一行輸出。所以,當你說

echo system('/...'); 

你說「嘿system,輸出此命令的結果」,然後「嘿EHCO,輸出什麼system回報」。卸下回聲

system('/...'); 

將解決您的問題。

其他一些東西來檢查

  1. 確定其galleryheaderview.cgi多數民衆贊成在返回的東西兩次?註釋掉包括,以確保其實際上那呼應我的相冊腳本兩次

  2. 是包含/這樣的方式galleryheaderview.cgi被調用兩次構造你的PHP頁面/程序?

  3. 確定調用URL http://reboltutorial.com/cgi-bin/gallery2/galleryheaderview.cgi調用的命令行與cgi-bin/gallery2/galleryheaderview.cgi相同嗎?

如果你已經簽出上面的三個項目,你需要拖放到的galleryheaderview.cgi源,看看爲什麼它的輸出頭的兩倍。

+0

我已經通過融合兩個CGI腳本解決了這個問題,但它並不令人滿意,您的解釋現在對我來說似乎理性,所以我會嘗試刪除回聲。謝謝。 – 2009-12-10 20:40:31

1

您是否確定沒有其他人在此行之前輸出My Gallery?你應該嘗試刪除它,看看它是否去徹底遠離或者還有一個「我的相冊」

<?php echo system('cgi-bin/gallery2/galleryheaderview.cgi'); ?> 

如果這不會給你帶來任何進一步的,也許你已經包括了一些PHP文件兩次?