2013-01-17 35 views
0

類似的問題在這裏,但沒有回答我的問題:PHP script not executing upon HTML Form 'Submission'麻煩從HTTP表單提交執行PHP文件

我主持的根Web文件夾網頁(index.html)在Linux中。它是通過一個按鈕輸入一個簡單的頁面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <body> 
    <form action="cgi-bin/foo.php" method="post"> 
     <input type="Submit" value="TEST"> 
    </form> 
    </body> 
</html> 

我也有一個簡單的PHP文件(foo.php),將創建在一個簡單的文檔運行。該文件保存在我的根目錄下的cgi-bin文件夾中。

<?php 
    $my_file = 'foo.xml'; 
    $handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); 
    $data = '<foo>OK</foo>'; 
    fwrite($handle, $data); 
    fclose($handle); 

    echo "foo.xml file created"; 
?> 

現在,網頁服務正常,我可以從命令提示符下運行PHP並正確執行。 .html和.php文件都已被授予CHMOD 777權限。

但是,試圖運行.PHP使用Web輸入按鈕提交給了這個錯誤:

403 Forbidden The requested URL '/index.html' resolves to a file which is marked executable but is not a CGI file; retrieving it is forbidden.

我一直在谷歌上搜索如何包裝一個PHP文件到cgi的包裝,但一切看起來雜亂無章。當然,我很想在這裏錯過一些東西嗎?

有關如何解決此錯誤的任何建議將不勝感激。謝謝,

+1

php不應該作爲cgi運行,而.html文件不應該是可執行文件。 PHP代碼不會「執行」,所以您只需要「讀取」(也可能是「寫入」)權限。 –

+0

Marc B,你是否建議額外的權限可能會妨礙PHP的執行?感謝您的評論。 – Nanomurf

+0

它會解釋你的錯誤。但是因爲它提到了/index.html,除非你已經告訴你的服務器把.html文件當作PHP腳本來處理,不太可能與php相關。 –

回答

0

事實證明,問題是我沒有在我的PHP文件中包含正確的標題。

添加#!/bin/cgi-php是關鍵....

雖然,我不明白爲什麼這條線是必要的PHP文件運行。必須是seb服務器要求?

1

將您的foo.php頁面移到與index.html表單相同的目錄中。

將表單的目標更改爲foo.php。

如果您的網絡服務器設置正確來解析PHP它應該「只是工作」。

這幾天很難看到php作爲cgi腳本運行。

+0

感謝您的評論。我按照你的建議嘗試過,並沒有改變我收到的錯誤。我可以從.php頁面中刪除可執行權限,並且當我點擊按鈕時,.php文本將被提供給我,請換行。當設置爲可執行時,我收到錯誤。 – Nanomurf

+0

您沒有正確設置PHP。 PHP文件未設置爲可執行文件。它的工作方式是Apache(或任何運行的Web服務器)將文件名的擴展名映射到任何用於提供頁面的解釋器。你應該有 AddHandler php5-script .php AddType text/html。php 在您的配置中。然後以.php結尾的任何內容都將被解釋。 –

+0

您運行的是哪個版本的Linux? –