2014051621401030514_dyna動態網頁錯誤處理過程

1030514_dyna動態網頁錯誤處理過程

原先的問題是帳號登入時無法顯示認證碼

#sudo arp-get update

#sudo arp-get upgrade

(#sudo /etc/init.d/mysql restart) 發現mysql有問題後

??mysqlcheck –uroot –p --use-frm -A(重建資料索引))產生了兩個問題:

問題一:2011124日星期日

在網站頂部打出下列一行錯誤碼:
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/XXXX...x-forum/viewforum.php on line 130

Server的安裝了 php 5.3 以上版本才發生。

要修復以上錯誤,隨路徑找出 #sudo vi /var/www/XXXX...x-forum/viewforum.php , 在第130  =& new 部份把 & 符拿掉,儲存檔案。

問題二:

當使用 session start() ,出現error
訊息如下:cannot send session cache limiter-headers already sent (output start at ............)

錯誤訊息的意思是在SESSION開始前就有資料送出到使用者端,一般還有下面幾種情形可供偵錯參考:
1.
引用了UTF-8格式的文件
有些UTF-8格式的文件會在文件的開始放入判斷字元(BOM),可以啟用PHP.INI的設定(sudo vi /etc/php5/apache2/php.ini)
output_buffering = Of f
修改為
àoutput_buffering = 4096

問題三:

 PHP 5.3 ereg() 無法正常使用,提示“Function ereg() is deprecated Error”。問題根源是php中有兩種正則表示方法,一個是posix,一個是perlphp6打算廢除posix的正則表示方法所以後來就加了個 preg_match。此問題解決辦法很簡單,在ereg前加個過濾提示資訊符號即可:把ereg()變成@ereg()。這樣遮罩了提示資訊,但根本問 題還是沒有解決,php5.2版本以前ereg都使用正常,在5.3以後,就要用preg_match來代替ereg。所以就需要變成這樣,原來:ereg("^[0-9]*$",$page)變成:preg_match("/^[0-9]*$/",$page)特別提醒:posixperl的很明顯的表達區別就是是否加斜杠,所以與ereg相比,後者在正則的前後分別增加了兩個"/"符號,不能缺少。
Tips:
此問題在php5.2之前版本不會出現。

$mytext = ereg_replace('[^A-Za-z0-9_]', '', $mytext );

改成

$mytext = preg_replace('/[^A-Za-z0-9_]/', '', $mytext );

問題解決了

 

沒有上一則|日誌首頁|沒有下一則
回應
    沒有新回應!
[此功能已終止服務]
關鍵字