2010-10-21 84 views
1

我最近繼承了一個用PHP編寫的網站,並有責任將其從當前主機移至我們自己的內部Web服務器。更改主機時發生PHP錯誤

我成功地複製了這些文件,並且我可以瀏覽我們的網絡服務器(IIS7)上的網站,但是一些而不是全部的PHP腳本似乎無法正常執行。

例如,下面的代碼加載從數據庫中的一些文字內容,並顯示在現有服務器上細,

<?php $sql = "select * from tblsubpages where PageID = 1 " ; $page_Result=mysql_query($sql); while ($page_Row = mysql_fetch_array ($page_Result)) {
?>

<?=str_replace('<blockquote>','',$page_Row['Details']); ?>

然而在新服務器上所有我得到的是以下輸出到文本內容應該在的地方。

','',$ page_Row ['Details']); ?>

這兩個站點上的文件是相同的,我已驗證它們可以成功連接到mySQL服務器。

問題 - 任何想法,我可以開始排除故障或可能是什麼原因?

+1

聽起來像php短標籤被禁用 – piddl0r 2010-10-21 15:43:11

回答

2

這可能是您的新主機上的php.ini的short_open_tag指令的問題。檢查它是否關閉,如果是,請嘗試將其打開。

+0

太棒了,知道它必須是簡單的 – 2010-10-21 15:55:14

1

首先要做的事情。

  • 確保您使用的是相同的PHP版本

  • 複製在你的php.ini文件。

  • 它看起來像你的ini文件已禁用短標籤。更改<?=<?php echo

2

在php.ini文件集:

short_open_tag = On 

或更改

<?= 

<?php 
1

如果你不想打開你的short_tags可以嘗試將它們轉換:

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(DIRECTORY)) as $file) { 
    if (!$file->isFile()) continue; 

    $tokens = token_get_all(file_get_contents($file)); 
    $source = ''; 
    foreach ($tokens as $token) { 
     if (is_string($token)) { 
      $source .= $token; 
      continue; 
     } 

     if ($token[0] == T_OPEN_TAG_WITH_ECHO) { 
      $token[1] = '<?php echo '; 
     } 
     $source .= $token[1]; 
    } 

    file_put_contents($file, $source); 
} 

這遍歷源的令牌,並通過<?php echo取代T_OPEN_TAG_WITH_ECHO