顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [CentOS] PHP 5 安裝與設定 (CentOS 7)
時間 2017-02-13 Mon. 20:06:41


========================================================
如要使用 Rocky Linux 9 安裝新版的 PHP 8 的話,請改至這篇
[RockyLinux9] PHP 安裝與設定 - KnucklesNote板 - Disp BBS
========================================================

安裝環境: Linode 的 CentOS 7 64bit

# 安裝 PHP

先安裝 Apache
[CentOS] Apache 安裝與設定 (CentOS 7) - KnucklesNote板 - Disp BBS

安裝 PHP
$ sudo yum install php
CentOS 7 安裝的是 PHP 5.4

安裝常用的 php 的模組
$ sudo yum install php-mbstring php-gd php-mysql php-xml

重新啟動 httpd
$ sudo systemctl restart httpd

檢查看看有沒有裝成功
$ php -v
PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies


利用 phpinfo() 檢查看看 httpd 與 php 是否正常
$ sudo vim /var/www/html/test_httpd.php

建立一個php網頁檔,內容輸入這一行即可:
<?php phpinfo(); ?>

打開瀏覽器,網址輸入 http://(server的ip位址)/test_httpd.php

可以看到 PHP 版本為 5.4.16、Apache 版本為 2.4.6
還可以看到各項 PHP 模組的設定值
[圖]


為了安全性之後記得將顯示 phpinfo(); 的檔案刪除


# 修改 PHP 設定檔

$ sudo vim /etc/php.ini
;不在網頁顯示error,而是記錄在 /var/log/httpd/error_log
display_errors = Off
log_errors = On
;ignore_repeated_errors = Off
ignore_repeated_errors = On
;ignore_repeated_source = Off
ignore_repeated_source = On
;html_errors = On
html_errors = Off

;設定error的log檔位置
;error_log = php_errors.log
error_log = /var/log/php_errors.log

;設定時區
;date.timezone =
date.timezone = Asia/Taipei

; session 的設定
; 儲存 session 的 cookie 存活時間(秒),設為0的話瀏覽器關掉即到期
;session.cookie_lifetime = 0
session.cookie_lifetime = 3600

; session存活時間
;session.gc_maxlifetime = 1440
session.gc_maxlifetime = 3600

重載 apache
$ sudo systemctl reload httpd


# 安裝加速器 OPcache

先安裝 EPEL 軟體庫
$ sudo yum install epel-release

安裝 PHP 模組 OPcache
$ sudo yum install php-opcache
Installed:
  php-pecl-zendopcache.x86_64 0:7.0.5-2.el7      

編輯 OPcache 設定檔 $ sudo vim /etc/php.d/opcache.ini
或是 $ sudo vim /etc/php.d/10-opcache.ini
; 要用來儲存OPcache的記憶體大小
; 1G RAM VPS 建議設定為 192M,4G RAM VPS 建議設定為 384M
opcache.memory_consumption=128
opcache.interned_strings_buffer=8

; 要用來快取的檔案數量(200~100000)
opcache.max_accelerated_files=4000

重新啟動 PHP
$ sudo systemctl restart httpd
有使用 php-fpm 的話
$ sudo systemctl restart php-fpm

執行 $ php -v 會看到多了一行
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

觀察 OPcache 的工具,可依使用情況調整 OPcache 設定檔
GitHub - A one-page opcache status page
將 opcache.php 下載後用瀏覽器開啟即可
[圖]


GitHub - PeeHaa/OpCacheGUI: GUI for PHP's OpCache
提供比較詳細的觀察與設定


# 安裝 php-fpm

將 php 由 Apache 的一個模組 mod_php 改為使用獨立的程式 php-fpm
[CentOS7] Apache MPM event模式 mod_proxy_fcgi, php-fpm - KnucklesNote板 - Disp BBS


# 更新 PHP 為 5.6 版

CentOS 7 只提供 PHP 到 5.4 版,想換成新版的話,要安裝 EPEL 和 Remi 軟體庫
$ sudo yum install epel-release
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
CentOS7 要安裝對應的版本 remi-release-7.rpm

安裝 yum-utils 就可以使用 yum-config-manager 來修改 Remi 軟體庫的設定
$ sudo yum install yum-utils

例如要安裝 php5.6 就執行
$ sudo yum-config-manager --enable remi-php56
會自動修改 /etc/yum.repos.d/remi.repo 檔

安裝新版的 php 與擴充功能
$ sudo yum install php php-mbstring php-gd php-mysql php-xml php-curl php-zip php-fileinfo
要連擴充功能一起裝,不然可能會有相依問題

查看 PHP 版本
$ php -v
PHP 5.6.40 (cli) (built: Aug  2 2023 11:49:14)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

如果之前有用其他使用編譯安裝的套件,例如 mailparse
要重新下載解壓縮後編譯安裝,不然會出現 PHP API 版本號碼不合的訊息:
Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match


參考 How to Install PHP 5.6 on CentOS 7


# 安裝 PECL 延伸模組 mailparse

有需要解析 E-mail 信件時,安裝 mailparse

PECL(The PHP Extension Community Library),PHP的標準延伸模組,可以補充實際開發中所需的功能。是根據PHP官方的標準用C語言寫成,在Windows下面以DLL的形式出現,在linux下面需要單獨進行編譯。

首先到 http://pecl.php.net 搜尋模組的source並下載到主機上,例如要裝 mailparse,到 http://pecl.php.net/package/mailparse 複製2.1.6版的 download 網址
(新的3.x版不支援 PHP 5,編譯會有錯誤)

下載壓縮檔後解壓縮
$ cd /usr/local/src
$ sudo wget https://pecl.php.net/get/mailparse-2.1.6.tgz
$ sudo tar -zxvf mailparse-2.1.6.tgz

編譯
$ cd mailparse-2.1.6
$ sudo phpize
$ sudo ./configure
$ sudo make
$ sudo make install

載入extension,mailparse 必需在 mbstring 之後載入才行
$ sudo vim /etc/php.d/30-mailparse.ini
輸入這一行即可
extension=mailparse.so

重新啟動 PHP
$ sudo systemctl restart httpd
有使用 php-fpm 的話
$ sudo systemctl restart php-fpm

執行 phpinfo() 若裝成功會出現 mailparse 的區塊
[圖]




安裝 memcached 使用記憶體來儲存 session
[CentOS7] PHP 使用 memcached 來存 session - KnucklesNote板 - Disp BBS

有使用 Pygments 的話要安裝一下
$ sudo yum install python-pygments
[PHP] 使用 Pygments 將程式碼上色 syntax highlighter - KnucklesNote板 - Disp BBS


□ 錯誤解決記錄

使用 phpmailer 時出現
Mailer Error: Language string failed to load: connect_host

→ 安裝 openssl 即可
$ sudo yum install openssl




--
※ 作者: Knuckles 時間: 2017-02-13 20:06:41
※ 編輯: Knuckles 時間: 2023-11-23 16:31:43 (台灣)
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 974 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇