跳转到帖子
在手机APP中查看

一个更好的浏览方法。了解更多

PHP论坛人

主屏幕上的全屏APP,带有推送通知、徽章等。

在iOS和iPadOS上安装此APP
  1. 在Safari中轻敲分享图标
  2. 滚动菜单并轻敲添加到主屏幕
  3. 轻敲右上角的添加按钮。
在安卓上安装此APP
  1. 轻敲浏览器右上角的三个点菜单 (⋮) 。
  2. 轻敲添加到主屏幕安装APP
  3. 轻敲安装进行确认。

Debian 13 安裝 PHP 8.4

精选回复

 


Debian 13 安裝 PHP 8.4

-----------------------------
加入 sury.org PHP套件來源
-----------------------------

sury.org為Debian社群廣泛使用的PHP套件來源


匯入GPG金鑰
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg


加入來源
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list



更新來源
apt update



升級已安裝的套件
apt upgrade -y



安裝常用工具 (wget、curl、vim、GPG 等)
apt install -y wget curl vim gnupg dpkg apt-transport-https lsb-release ca-certificates





安裝 PHP 8.4 核心與擴展

一次將三行都複製貼上

apt install -y php8.4 php8.4-cli php8.4-fpm php8.4-mysql php8.4-curl php8.4-gd \
php8.4-mbstring php8.4-xml php8.4-zip php8.4-imap php8.4-soap php8.4-gmp \
php8.4-bcmath php8.4-redis php8.4-exif php8.4-imagick





各擴展用途說明
php8.4-fpm:PHP FastCGI 處理程序 (搭配 Nginx 必要)
php8.4-mysql:連接 MySQL / MariaDB 資料庫
php8.4-curl:發送 HTTP 請求 (呼叫 API 等)
php8.4-gd:圖片處理 (縮圖、浮水印等基本功能)
php8.4-mbstring:多位元組字串處理 (中文、日文等)
php8.4-xml:XML解析與生成
php8.4-zip:壓縮與解壓縮ZIP檔
php8.4-imap:收發 Email (IMAP 協定)
php8.4-soap:SOAP Web Service 支援
php8.4-gmp:大數運算 (加密相關)
php8.4-bcmath:高精度數學運算 (金融計算常用)
php8.4-redis:連接 Redis 快取伺服器
php8.4-exif:讀取圖片 EXIF 後設資料 (相機拍攝資訊)
php8.4-imagick:進階圖片處理 (需搭配 imagemagick)







安裝 PEAR、ImageMagick 與 Redis 服務

apt install php-pear imagemagick redis -y



說明
php-pear:PHP套件管理工具,部分函式庫安裝時需要
imagemagick:系統層級的圖片處理程式 (php8.4-imagick 的依賴)
redis:Redis 伺服器本體 (提供快取與Session儲存服務)







重啟PHP
systemctl restart php8.4-fpm






瀏覽pear版本
pear version


應可看到類似輸出
PEAR Version: 1.10.16
PHP Version: 8.4.18
Zend Engine Version: 4.4.18
Running on: Linux




如果要安裝其他元件,可以搜尋看看有無對應的套件
apt-cache search php8.4* | grep php




防止跨目錄攻擊 / 防止路徑攻擊 cgi.fix_pathinfo

此設定防止攻擊者藉由偽造路徑讓伺服器執行惡意腳本,預設值為 1 (啟用),必須改為 0 (關閉)

使用 sed 自動修改 (推薦:快速且不易出錯)

sed -i 's@^;*cgi.fix_pathinfo=.*@cgi.fix_pathinfo=0@' /etc/php/8.4/fpm/php.ini



確認是否修改成功
grep cgi.fix_pathinfo /etc/php/8.4/fpm/php.ini


應顯示 cgi.fix_pathinfo=0







------------------
修改php.ini
------------------


本教學只修改 PHP-FPM 的 php.ini,CLI 使用的是 /etc/php/8.4/cli/php.ini

vi /etc/php/8.4/fpm/php.ini


使用Xshell 8軟體上面的選項,編輯 -> 尋找 -> 尋找目標,將能快速找到以下這些要修改的地方


停用危險函數,搜尋  disable_functions

修改為 (請依實際需求調整)

disable_functions = passthru,system,chroot,chgrp,chown,shell_exec,popen,ini_alter,ini_restore,dl,readlink,symlink,popepassthru,stream_socket_server,pcntl_exec




執行時間與記憶體,修改它們的值

max_execution_time = 300

max_input_time = 300

memory_limit = 512M



錯誤顯示,正式環境請設 display_errors = Off,避免洩漏程式碼與路徑資訊

display_errors = Off

log_errors = On

error_reporting = E_ALL & ~E_DEPRECATED



上傳與傳輸設定

post_max_size = 120M

upload_max_filesize = 100M

max_file_uploads = 100

default_socket_timeout = 180




儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter



---------------------------------------------
確認擴展安裝 exif、gmp、imagick、redis
---------------------------------------------

某些擴展可能在主要安裝指令中未被正確安裝,建議逐一確認並補裝

確認所有已載入的PHP擴展,輸出清單中應可看到:exif、gmp、imagick、redis 以及其他已安裝的擴展

/bin/php8.4 -m





--------------------------
設定系統預設 PHP 版本
--------------------------

若伺服器上安裝了多個PHP版本,需明確指定預設使用的版本,避免版本衝突


查看目前已登錄的PHP版本
update-alternatives --list php


設定預設版本為PHP 8.4
update-alternatives --set php /usr/bin/php8.4


互動式選擇 (若有多個版本可供切換)
update-alternatives --config php


確認目前PHP版本
php -v



---------------------------
設定開機啟動與重啟服務
---------------------------

設定PHP-FPM開機自動啟動
systemctl enable php8.4-fpm


立即重啟PHP-FPM (套用所有設定變更)
systemctl restart php8.4-fpm





-----------------------------------
PHP-FPM Pool 效能調整
-----------------------------------

PHP-FPM 的行程池設定檔位於 /etc/php/8.4/fpm/pool.d/www.conf,可依伺服器規格調整參數


編輯
vi /etc/php/8.4/fpm/pool.d/www.conf



重要參數 (依伺服器規格調整)

pm = dynamic                              ; 行程管理模式 (dynamic 適合大多數情況)

pm.max_children = 20               ; 最大子行程數 (依RAM調整)

pm.start_servers = 5                  ; 啟動時建立的行程數

pm.min_spare_servers = 5       ; 最少待機行程數

pm.max_spare_servers = 10    ; 最多待機行程數



儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter




行程數計算公式

pm.max_children ≈ 可用RAM (MB) ÷ 單個PHP行程記憶體

例如:1024MB RAM,每行程約 50MB → max_children = 20


可用 ps --no-header -o rss -C php-fpm8.4 | awk '{sum+=$1} END {print sum/NR/1024" MB"}' 測量實際用量

ps --no-header -o rss -C php-fpm8.4 | awk '{sum+=$1} END {print sum/NR/1024" MB"}'




---------------------------
錯誤記錄設定
---------------------------


正式環境關閉 display_errors 後,務必設定 error_log,確保錯誤訊息被記錄


----------------------------------------
方法一:在 Pool 設定檔中設定 (推薦)
----------------------------------------

Pool 設定檔 www.conf 的優先權高於 php.ini,適合多網站不同 log 路徑的情境


編輯
vi /etc/php/8.4/fpm/pool.d/www.conf


在末尾加入


; 自訂錯誤記錄路徑
php_flag[log_errors] = on
php_value[error_log] = /var/log/php8.4-fpm-error.log




儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter




-----------------------------
方法二:在 php.ini 中設定
-----------------------------

編輯
vi /etc/php/8.4/fpm/php.ini


確認或修改以下參數

; 正式環境關閉
display_errors = Off


; 開啟錯誤記錄
log_errors = On


; 正式環境 (保守型),記錄所有錯誤,但排除廢棄警告
error_reporting = E_ALL & ~E_DEPRECATED


; 建議放在 Error handling and logging 區段
; 錯誤記錄檔路徑
error_log = /var/log/php8.4-fpm-error.log


儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter





---------------------------
建立記錄檔並設定權限
---------------------------

建立記錄檔
touch /var/log/php8.4-fpm-error.log


設定擁有者 (與 PHP-FPM 執行使用者一致)
chown www-data:www-data /var/log/php8.4-fpm-error.log


設定權限 (640 = 擁有者可讀寫,群組可讀,其他人無權限)
chmod 640 /var/log/php8.4-fpm-error.log


重啟服務
systemctl restart php8.4-fpm



---------------------------------------
設定 logrotate (避免 log檔 過大)
---------------------------------------

cat > /etc/logrotate.d/php-fpm << 'EOF'
/var/log/php8.4-fpm-error.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 640 www-data www-data
    sharedscripts
    postrotate
        systemctl reload php8.4-fpm > /dev/null 2>&1 || true
    endscript
}
EOF




----------------
重開機後驗證
----------------


重開機
reboot



重開機後,執行以下指令確認PHP-FPM已自動啟動
systemctl status php8.4-fpm


應顯示 Active: active (running))



再次確認PHP版本
php -v

本帖最后于,由Jack编辑

创建帐户或登录后发表意见

帐户

导航

搜索

配置浏览器推送通知

Chrome (安卓)
  1. 轻敲地址栏旁的锁形图标。
  2. 轻敲权限 → 通知。
  3. 调整你的偏好。
Chrome (台式电脑)
  1. 点击地址栏中的挂锁图标。
  2. 选择网站设置。
  3. 找到通知选项并调整你的偏好。