看板 KnucklesNote
作者 標題 [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 模組的設定值
![[圖]](http://i.imgur.com/dDM557F.png)
為了安全性之後記得將顯示 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
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
; 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 下載後用瀏覽器開啟即可
![[圖]](https://i4.disp.cc/u/23/3fae666.png)
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 的區塊![[圖]](https://i4.disp.cc/u/23/50abd78.png)
安裝 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 累積人氣: 979
回列表(←)
分享