2012-10-10 98 views
4

朋友的燈主機似乎配置錯​​誤。我嘗試執行php,但它似乎並沒有工作。爲什麼我的php標籤轉換爲html評論?

在Chrome的檢查元素:

<?php echo 'test'; ?> 

變爲:

​​

此外,它已經引發了下載文件,而不是打開它作爲一個網頁。

我已經試過在.htaccess文件的各種代碼,但它似乎沒有任何效果:

AddType x-mapp-php5 .php 
AddType application/x-httpd-php .php 
AddHandler x-mapp-php5 .php 
+1

爲什麼你能夠檢查' Matthew

+1

如果沒有看到配置的相關部分,很難爲您提供幫助。你在哪裏加載PHP模塊,或通過CGI執行它? http://php.net/manual/en/install.php – Brad

+0

那麼爲什麼你會強迫PHP讀取.php文件,如果它不這樣做,它可能沒有安裝。我添加的最後一個類型和用於php的AddHandler,服務器不知道它下載了文件,這就是原因。 – kalpaitch

回答

6

正確配置PHP操作的地方是httpd.conf文件,它位於Apache安裝目錄的conf子目錄中。

在那裏,您將需要尋找模塊加載部分,這將是一堆以LoadModule開頭的行。某處在那裏,你應具有以下(或非常類似的東西):

LoadModule php5_module "location\of\your\php\installation" 
AddType application/x-httpd-php .php 
PHPIniDir "location\of\your\php\configuration\file" 

我不是太熟悉Linux,但在Windows(WAMP)安裝,這些將是沿着線的東西:

LoadModule php5_module "c:/program files/php/php5apache2.dll" 
AddType application/x-httpd-php .php 
PHPIniDir "C:/program files/php" 

而且httpd.conf文件,我的機器上,在C:\Program Files\Apache Group\Apache2\conf\httpd.conf

也可能是PHP根本沒有安裝在您的機器上,在這種情況下,您將不得不下載並安裝它。布拉德已經發布的相關鏈接在他的意見之一,(+1,順便說一句,布拉德),但在一個地方擁有一切的緣故:

PHP: Installation and Configuration - Manual

2

聲音對我說,你的PHP配置不正確或安裝在燈配置。你使用什麼分佈?這可能與運行重新安裝PHP的命令一樣簡單,否則您可能需要使用php支持編譯apache。

+0

嗯,老實說,我不知道這個東西的答案。我從來沒有必要做過這樣的事情。我猜測更多的探索/學習是有序的。 –

+0

「用PHP支持編譯Apache」...什麼? – Brad

+0

我會刪除AddHandlers完全,他們聽起來不必要,可能會導致問題。 – kalpaitch

0

聽起來就像您使用的編輯器正在改變您輸入的內容。確保文件中的內容是文件中的實際內容。使用FTP上傳一個PHP文件應該確保這一點。

+2

nope,文件在服務器上是上傳的,我想也許inspect元素就是這麼做的 –

+0

這不是我的經驗,也請嘗試'查看頁面源代碼' – Zagrev

+0

那麼,代碼在視圖源中看起來是「正確的」。保存後改變你的文件? –

3

您的Chrome是騙你的。您的PHP源文件爲<?php echo 'test'; ?>。由於PHP未執行,因此將此文件發送到瀏覽器。如果瀏覽器應該解釋這個文本,它會偶然發現<??>標記。它們有一個含義 - 它們是「XML處理指令」,開放角度之後的文本定義了目標。

顯然,瀏覽器並不知道名爲「PHP」的目標,因此該文本被忽略。

然後元素檢查器嘗試顯示DOM並且在說謊原始源代碼,因爲他正在處理PARSED源代碼 - 這很好,因爲您通常想知道瀏覽器在哪些數據上起作用,並且此操作包括瀏覽器如何解釋您的來源。

但是,如果您發生任何錯誤,瀏覽器將嘗試修復它,並且修復程序包含在元素檢查器中。

顯然,未知XML處理指令的修復方法是通過註釋將其禁用。

0

我面臨着完全相同的問題,當我無意中試圖通過file://協議來測試本地 PHP文件瀏覽器中的服務器上,而不是通過安裝的站點。

所以答案就是:「PHP先生已經離開了大樓」。我們需要檢查配置,文件或訪問的位置。

而瀏覽器只是試圖修復一個網頁,並幫助我們。

0

我剛剛解決了這個問題。 您需要從WAMP打開文件,而不是從硬盤驅動器直接打開。

在瀏覽器中,放:localhost/...../yourfile.php

否則,您的瀏覽器將取代所有<?php ?><!-- ?php ?-->

2

這只是發生在我身上。原來我忘了把文件類型從.html改成.php

1

如果你把你的代碼放在標準目錄之外(在我的情況下是開發場景),你應該檢查你的/ etc/apache2/mod-enabled或/ etc/apache2的/ MOD-可供php5.conf(Ubuntu的),並評論說,註釋指示線:

# To re-enable PHP in user directories comment the following lines 
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it 
# prevents .htaccess files from disabling it. 
<IfModule mod_userdir.c> 
    <Directory /home/*/public_html> 
     php_admin_value engine Off 
    </Directory> 
</IfModule> 
0

看來你需要指導阿帕奇明確處理HTML文件作爲PHP文件,我遇到了同樣的問題,但將文件重命名爲.php解決了我的問題。

1

這個答案並不適用於OP的這個問題的具體變種,但我有基本相同的問題 - <? var_dump($test); ?>被轉換爲<!--? var_dump($test); ?--> - 我可以通過在php.ini使short_open_tag解決。

+0

謝謝!我使用默認的內置PHP web服務器,php.ini在默認情況下也不允許使用簡短的'<?'開始標記(註釋掉),並堅持使用完整的<?php'。 –

0

在Ubuntu系統中,安裝Apache PHP5插件,爲我工作:

sudo apt-get install libapache2-mod-php5 
sudo service apache2 restart 
+0

我有一個文件info.php包含<?的phpinfo(); ?>當我嘗試這個解決方案時,得到'libapache2-mod-php5已經是最新版本了',並且apache服務器仍然圍繞着我的php代碼,並且<! - comments - > –

相關問題