2020年4月14日 星期二

從PHP5改成PHP7

centos 7 到 centos 8 的網站最大的差異就是PHP 5 改成PHP7 ,原來PHP5為了往下相容用了一些技巧,但是到了PHP7完全不能用,而且偵錯很麻煩

偵錯


if(!$_GET['debug']){
ini_set('display_errors', false);
}else{
  error_reporting(E_ALL);
  ini_set('display_errors', '1');
}

但是如果遇到一些停用的函數就會產生 500的錯誤,而且不會顯示出來。

mysql 改成 mysqli


這裡相關的函數一堆,如果原來都是用 mysql原生函數去寫,那要改的地方就很多了,當然也可以寫相容函數去轉。

__autoload 改用 spl_autoload_register

原來是
function __autoload($class_name){
global $rootpath;
$file = $rootpath.'include/table/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/class/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/systab/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/class/'.$class_name.'/'.$class_name.'.class.php';
if(!file_exists($file)){
$str=file_get_contents($rootpath.'include/template.php');
$str=str_replace('CLASSNAME',$class_name,$str);
fileWrite($rootpath.'cache/','tmpclass.php',$str);
$file=$rootpath.'cache/'.'tmpclass.php';
}
}
}
}
include_once ($file);
}

改成
function ceag_autoload($class_name){
global $rootpath;
$file = $rootpath.'include/table/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/class/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/systab/'.$class_name.'.class.php';
if(!file_exists($file)){
$file = $rootpath.'include/class/'.$class_name.'/'.$class_name.'.class.php';
if(!file_exists($file)){
$str=file_get_contents($rootpath.'include/template.php');
$str=str_replace('CLASSNAME',$class_name,$str);
fileWrite($rootpath.'cache/','tmpclass.php',$str);
$file=$rootpath.'cache/'.'tmpclass.php';
}
}
}
}
include ($file);
}

spl_autoload_register('ceag_autoload');

eregi_replace 改用 preg_replace


patthern 的部分要加上 //

session 的問題
一些 seesion函數已經不存在了,可以改寫相容函數
if (!function_exists('session_is_registered')) {
    function session_is_registered($name) {
        if (isset($_SESSION[$name])) {
            return true;
        } else {
            return false;
        }
    }
}
 
if (!function_exists('session_register')) {
    function session_register() {
        $args = func_get_args();
        foreach ($args as $key) {
            $_SESSION[$key] = $GLOBALS[$key];
        }
    }
}
 
if (!function_exists('session_unregister')) {
    function session_unregister($name) {
        unset($_SESSION[$name]);
    }
}



沒有留言:

張貼留言