「PHP8適應」修訂間的差異
跳至導覽
跳至搜尋
(→DSM) |
|||
| 行 23: | 行 23: | ||
*# xls,文件,讀寫 Excel(.xls)檔案的擴充或外掛<br/>常見情境:匯入 / 匯出 Excel;舊版 Excel 檔案;⚠️ 多半會改用 PhpSpreadsheet 套件。 | *# xls,文件,讀寫 Excel(.xls)檔案的擴充或外掛<br/>常見情境:匯入 / 匯出 Excel;舊版 Excel 檔案;⚠️ 多半會改用 PhpSpreadsheet 套件。 | ||
*# zip,壓縮,建立與解壓縮 ZIP 檔案<br/>常見情境:批次下載;備份資料;上傳後自動解壓 | *# zip,壓縮,建立與解壓縮 ZIP 檔案<br/>常見情境:批次下載;備份資料;上傳後自動解壓 | ||
| + | |||
| + | ===PHP8=== | ||
| + | {{:PHP在DSM中}} | ||
於 2025年12月21日 (日) 20:02 的修訂
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、下載檔案)
常見情境:呼叫 REST API(LINE、reCAPTCHA、Google、政府資料);下載遠端檔案、抓網頁內容 - gd,影像處理函式庫(生成、裁切、縮放、加浮水印、畫文字)
常見情境:圖片加字,如:drawword.php;上傳圖片後自動縮圖;產生驗證碼 - iconv,編碼 / 國際化,字元編碼轉換(如 UTF-8 ↔ Big5)
常見情境:相容於舊系統、CSV、政府資料;PHP 8.x 處理歷史 Big5 資料 - intl,編碼 / 國際化,處理語系、日期、數字、排序規則
常見情境:多語系網站;正確顯示各國日期格式;Unicode 排序(比 sort() 正確) - mysqli,資料庫,與 MySQL / MariaDB 溝通
常見情境:資料庫操作;支援 prepared statement(防 SQL injection) - openssl,加密、解密、憑證、HTTPS、金鑰處理
常見情境:HTTPS 憑證;JWT / OAuth;加密資料(AES、RSA) - pdo_mysql,資料庫,PDO(PHP Data Objects) 是一種 PHP 的資料庫抽象層 (Database Abstraction Layer),它提供了一個統一、一致的介面,讓 PHP 程式可以無縫地連接和操作不同的資料庫(如 MySQL, PostgreSQL, SQLite, SQL Server 等),而不需要針對特定資料庫寫不同的程式碼,核心價值是簡化多資料庫切換、提升程式的可攜性和可維護性。
常見情境:寫「可換資料庫」的程式;Laravel / 現代 PHP 框架;應該與 mysqli 擇一使用 - zlib,壓縮,gzip、deflate
常見情境:HTTP gzip 壓縮;壓縮檔處理;效能與頻寬優化
- curl,網路 / API,主動對外發送 HTTP / HTTPS / FTP 等請求(抓 API、下載檔案)
- 待核取
- bcmath,計算,高精度數學運算(避免浮點誤差)
- exif,影像,讀取圖片中的 EXIF 中繼資料
常見情境:照片拍攝時間;手機拍照方向;GPS 資訊 - ftp,網路 / API,FTP 協定上傳、下載、管理檔案
常見情境:舊系統;NAS ↔ 主機檔案同步(非加密);漸被 SSH/SFTP 取代 - posix,系統,存取 Unix / Linux 系統層級資訊
常見情境:取得使用者 UID / GID;CLI 工具、NAS 腳本;權限判斷 - sockets,網路 / API,底層網路通訊(TCP / UDP socket)
常見情境:即時通訊;自訂通訊協定;伺服器間低階連線 - ssh2,網路 / API,透過 SSH 連線遠端主機(含 SFTP)
常見情境:NAS 遠端部署;用 PHP 操作其他主機;安全檔案傳輸(取代 FTP) - xls,文件,讀寫 Excel(.xls)檔案的擴充或外掛
常見情境:匯入 / 匯出 Excel;舊版 Excel 檔案;⚠️ 多半會改用 PhpSpreadsheet 套件。 - zip,壓縮,建立與解壓縮 ZIP 檔案
常見情境:批次下載;備份資料;上傳後自動解壓
PHP8
套件名:PHP8.1
套件安裝後,主程式有三組路徑:
- 實體位置(實際存放路徑):/volume1/@appstore/PHP8.1/usr/local/bin/php81
解說:/分割名/@appstore/套件名/腳本用名 - 管理入口,DSM 管理套件框架的標準路徑:
- /var/packages/<套件名>/scripts 資料夾,用於啟停、升級腳本
- /var/packages/<套件名>/etc -> /volume1/@appconf/PHP8.1 資料夾,用於設定套件自己的狀態
- /var/packages/<套件名>/conf 資料夾,用於套件對外服務、可被其他系統引用的設定
- /var/packages/<套件名>/target -> /volume1/@appstore/PHP8.1 指向真正安裝位置的捷徑
- /var/packages/<套件名>/home -> /volume1/@apphome/PHP8.1
- /var/packages/<套件名>/share -> /volume1/@appshare/PHP8.1
- /var/packages/<套件名>/tmp -> /volume1/@apptemp/PHP8.1
- /var/packages/<套件名>/var -> /volume1/@appdata/PHP8.1
- /var/packages/<套件名>/INFO 檔案,「這是什麼套件」的靜態身分證,DSM 會用其中的資訊來:在套件中心顯示名稱 / 版本;判斷是否能啟動;判斷 CPU 架構是否相容…
- /var/packages/<套件名>/enabled 檔案,「目前是否啟用」的即時狀態旗標,表現「這個套件現在是不是開著?」,通常只是空檔案(或極小),存在 = 套件被啟用 / 不存在 = 套件被停用
- 使用入口,使用者腳本用名:
/usr/local/bin/php81 -> /var/packages/PHP8.1/target/usr/local/bin/php81 皆指向主程式
/usr/local/bin 之下放所有已安裝套件(含 PHP8.1 的已安裝套件)的執行捷徑
/usr/local/bin 通常在 PATH 中
PHP8.1 各擴充套件實際存放在 /volume1/@appstore/PHP8.1/usr/local/lib/php81/modules 之下的各 *.so
/volume1/@appstore/PHP8.1/usr/lib 則放各擴充套件的執行捷徑