2012-05-21 59 views
2

我的整個PHP頁面只顯示爲文本,並且沒有執行PHP代碼。這很奇怪,因爲當我在test.php文件中使用<? phpinfo(); ?>進行測試時,我得到了一個成功的測試,它在我的Apache服務器上工作。但是,當我試圖做其他事情。它只顯示爲文本。PHP將無法正常執行,只會顯示爲文本

編輯:這裏是代碼的鏈接。我無法弄清楚如何在這裏發佈。 Pastebin

<?php 
    // create short variable names 
    $tireqty = $_POST['tireqty']; 
    $oilqty = $_POST['oilqty']; 
    $sparkqty = $_POST['sparkqty']; 
    $find = $_POST['find']; 
?> 
<html> 
<head> 
    <title>Bob's Auto Parts - Order Results</title> 
</head> 
<body> 
<h1>Bob's Auto Parts</h1> 
<h2>Order Results</h2> 
<?php 

    echo "<p>Order processed at ".date('H:i, jS F Y')."</p>"; 

    echo "<p>Your order is as follows: </p>"; 

    $totalqty = 0; 
    $totalqty = $tireqty + $oilqty + $sparkqty; 
    echo "Items ordered: ".$totalqty."<br />"; 


    if ($totalqty == 0) { 

     echo "You did not order anything on the previous page!<br />"; 

    } else { 

     if ($tireqty > 0) { 
     echo $tireqty." tires<br />"; 
     } 

     if ($oilqty > 0) { 
     echo $oilqty." bottles of oil<br />"; 
     } 

     if ($sparkqty > 0) { 
     echo $sparkqty." spark plugs<br />"; 
     } 
    } 


    $totalamount = 0.00; 

    define('TIREPRICE', 100); 
    define('OILPRICE', 10); 
    define('SPARKPRICE', 4); 

    $totalamount = $tireqty * TIREPRICE 
       + $oilqty * OILPRICE 
       + $sparkqty * SPARKPRICE; 

    echo "Subtotal: $".number_format($totalamount,2)."<br />"; 

    $taxrate = 0.10; // local sales tax is 10% 
    $totalamount = $totalamount * (1 + $taxrate); 
    echo "Total including tax: $".number_format($totalamount,2)."<br />"; 

    if($find == "a") { 
     echo "<p>Regular customer.</p>"; 
    } elseif($find == "b") { 
     echo "<p>Customer referred by TV advert.</p>"; 
    } elseif($find == "c") { 
     echo "<p>Customer referred by phone directory.</p>"; 
    } elseif($find == "d") { 
     echo "<p>Customer referred by word of mouth.</p>"; 
    } else { 
     echo "<p>We do not know how this customer found us.</p>"; 
    } 

?> 
</body> 
</html> 
+3

請問一些代碼? – lonesomeday

+0

你如何查看文件? – clem

+1

服務器?本地?遠程?詳情請。 – 2012-05-21 22:11:51

回答

4

我願意打賭$ 10是test.php使用<?php,且變更後的代碼使用<?,而服務器不把它理解爲一個開放的標籤,因爲short_open_tags是關閉在php.ini。

很多書籍都使用<?開放標籤,而大多數服務器只支持長版(<?php)。如果是這樣的話,那麼將所有簡單的<?更改爲<?php就可以做到。

PHP代碼僅在1種情況下公開:當PHP解釋器沒有將其標識爲PHP代碼時。這可能是由以下兩個問題造成的:

  • Apache(或其他http服務器)配置錯誤,根本無法處理php文件。
  • 在PHP文件中錯誤地打開標籤,所以PHP不知道代碼何時開始。

如果該文件是一個* .PHP,Apache是​​否開啓通過PHP解釋器服務* .php文件,如果使用或PHP配置爲使用其他類型的二手標籤標準的開放標籤,如果你通過瀏覽器訪問這個PHP文件,在任何情況下PHP都不會公開這些代碼。

+1

最近在一個暴露PHP代碼的網站上看到了這一點,並且玩了一段時間。玩的開心。 – AlexanderMP

+0

感謝您的回覆。雖然我希望是這種情況,但它全部使用 cadavid4j

+0

那麼,如果一個php文件昨天在完全相同的服務器上工作而沒有任何更改,那麼它會導致今天不工作的原因是什麼? – cadavid4j