檢視 PHP8適應 的原始碼
←
PHP8適應
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
[[分類:程式語言]] [[jendo::Php7適應]] 在 wiki1231 的 分類:Etable 中 ===DSM=== 自 DSM 7.3 起停用 PHP 8.0(含 8.0) 以前的 PHP 套件 「Web Station / 指令碼語言設定 / PHP / 使用者定義 Default Profile PHP 8.1 / 編輯 / 擴充模組」 * 核取: *# curl,網路 / API,主動對外發送 HTTP / HTTPS / FTP 等請求(抓 API、下載檔案)<br/>常見情境:呼叫 REST API(LINE、reCAPTCHA、Google、政府資料);下載遠端檔案、抓網頁內容 *# gd,影像處理函式庫(生成、裁切、縮放、加浮水印、畫文字)<br/>常見情境:圖片加字,如:drawword.php;上傳圖片後自動縮圖;產生驗證碼 *# iconv,編碼 / 國際化,字元編碼轉換(如 UTF-8 ↔ Big5)<br/>常見情境:相容於舊系統、CSV、政府資料;PHP 8.x 處理歷史 Big5 資料 *# intl,編碼 / 國際化,處理語系、日期、數字、排序規則<br/>常見情境:多語系網站;正確顯示各國日期格式;Unicode 排序(比 sort() 正確) *# mysqli,資料庫,與 MySQL / MariaDB 溝通<br/>常見情境:資料庫操作;支援 prepared statement(防 SQL injection) *# openssl,加密、解密、憑證、HTTPS、金鑰處理<br/>常見情境:HTTPS 憑證;JWT / OAuth;加密資料(AES、RSA) *# pdo_mysql,資料庫,PDO(PHP Data Objects) 是一種 PHP 的資料庫抽象層 (Database Abstraction Layer),它提供了一個統一、一致的介面,讓 PHP 程式可以無縫地連接和操作不同的資料庫(如 MySQL, PostgreSQL, SQLite, SQL Server 等),而不需要針對特定資料庫寫不同的程式碼,核心價值是簡化多資料庫切換、提升程式的可攜性和可維護性。<br/>常見情境:寫「可換資料庫」的程式;Laravel / 現代 PHP 框架;應該與 mysqli 擇一使用 *# zlib,壓縮,gzip、deflate<br/>常見情境:HTTP gzip 壓縮;壓縮檔處理;效能與頻寬優化 *待核取 *# bcmath,計算,高精度數學運算(避免浮點誤差) *# exif,影像,讀取圖片中的 EXIF 中繼資料<br/>常見情境:照片拍攝時間;手機拍照方向;GPS 資訊 *# ftp,網路 / API,FTP 協定上傳、下載、管理檔案<br/>常見情境:舊系統;NAS ↔ 主機檔案同步(非加密);漸被 SSH/SFTP 取代 *# posix,系統,存取 Unix / Linux 系統層級資訊<br/>常見情境:取得使用者 UID / GID;CLI 工具、NAS 腳本;權限判斷 *# sockets,網路 / API,底層網路通訊(TCP / UDP socket)<br/>常見情境:即時通訊;自訂通訊協定;伺服器間低階連線 *# ssh2,網路 / API,透過 SSH 連線遠端主機(含 SFTP)<br/>常見情境:NAS 遠端部署;用 PHP 操作其他主機;安全檔案傳輸(取代 FTP) *# xls,文件,讀寫 Excel(.xls)檔案的擴充或外掛<br/>常見情境:匯入 / 匯出 Excel;舊版 Excel 檔案;⚠️ 多半會改用 PhpSpreadsheet 套件。 *# zip,壓縮,建立與解壓縮 ZIP 檔案<br/>常見情境:批次下載;備份資料;上傳後自動解壓 ===PHP8=== {{:PHP在DSM中}} ===Etable=== # /et/class/wiki/wiki.php 中的第 240 行,PHP 7.4 以前,字串與陣列可以用 大括號 {} 取值,如:「$char = $str{3};」;但從 PHP 8.0 起,這種寫法 已被完全移除,只能用:「$char = $str[3];」取值。 # /et/class/database/etable.php 第 531 行,$this->fields[$i]["colflag"]=$fieldInfo->flag; => $this->fields[$i]["colflag"]=$fieldInfo->flags; 因為 mysqli_field 的實際屬性只有 flags 沒有 flag ,但 etable.php 的欄旗用法又和 flags 不一樣。此處待改,先解除報錯問題再講;怎麼調整欄旗的正確用法以後再說。 # /et/class/database/etable.php 第 804 行,註解掉「$temp[0]=$a2[0]??null;」,因為 $a2[0] 不存在 # /et/class/database/etable.php 第 1065 行,直接賦值給 $true ,因為 each() 已自 PHP 移除 # /et/class/database/etable.php 第 1414 行, function quoteSmart 改宣告為 public static function quoteSmart 。 # PHP 8.1 已經「不再支援」用「與類別同名的方法」當建構子了。只有 __construct() 會在實體化時自動執行。所以 #* /et/class/xoopsform 下面的各表單定義全改。 #* /et/class/xoopsform/formelementtray.php 中的 function XoopsFormElementTray 不能改成建構子 #* etable 的建構子要改 #* login 的建構子要改 # /et/class/xoopsform/formdatetime-et.php 的第 67 行, $value[0] => $value[0]??'' ,因為 $value 沒有被初始化(預設就是 null) ===福留子孫<span style='font-weight:normal;font-size:80%'>與</span>跨校選修=== ====升級「福留子孫」==== {{jendo::升級至1.35版}} ====調外掛==== # 修復 SqlTbl\includes\SqlTbl.php 的第 12 行 #*mysqli_connect_errno() 本來就是「不接受任何參數」的函式,在 PHP 7.4 以前即使你多塞了一個 $connect ,PHP 仍「寬鬆容忍」→ 不報錯;在 PHP 8.0+ 參數數量嚴格檢查多給一個參數 → Fatal Error # 修復 LinkedImages 外掛 #*調整 LocalSettings.php 內容 #*讓 images 中的圖檔瀏覽器可讀:DSM / File Station / images 資料夾 / 右鍵選單 / 內容 / 權限標籤 / 新增 http 群組 / 給全部讀取權限 / 套用到這個資料夾、子資料夾、檔案 / 儲存 #*重整頁「跳至頁首」 # 修復 /EmbedVideo/classes/VideoService.php 的 775 行 #*$this->service['url_regex'] => ($this->service['url_regex']??[]) #*$this->service['id_regex'] => ($this->service['id_regex']??[]) ====interwiki資料表==== iw_prefix 欄,大寫改小寫 ===網路檔案櫃=== # GfUploadFiles.php 的 if(($_SESSION['login_user']==$fileOwn['user']) => if(($_SESSION['login_user']===($fileOwn['user']??null)) # /uploadFiles/theme.php 修改以下部分: #* $_SESSION['checkin']==1 =>($_SESSION['checkin']??'')==1 #* $_REQUEST['act']=='uploadYTVedioForm' => ($_REQUEST['act']??'')=='uploadYTVedioForm' #* $_REQUEST['act']=='addDirForm' => ($_REQUEST['act']??'')=='addDirForm' #* $_REQUEST['sessionDestroy']!=1 => ($_REQUEST['sessionDestroy']??'')!=1 # /uploadFiles/index.php 待全面部署,已修改以下部分: #* $omitLogin!=1 => ($omitLogin??'')!=1 ===振鐸官網=== # /jendo/theme.php 的第 120 行,PHP 7.x 以前:mktime() 允許不帶參數,等同於「現在時間」;但從 PHP 8.0 起:mktime() 👉 不再允許 0 參數呼叫;改用 date('Y-m-d'); 📌 date() 在未指定第二個參數時,預設就是使用目前時間。
此頁面使用了以下模板:
PHP在DSM中
(
檢視原始碼
)
返回「
PHP8適應
」頁面
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
有關 MediaWiki 的說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊