# Php系統升級
- 系統升級: php5-> php7
14.04
不支援7, 故需要14.04
->16.04
Ubuntu 系統升級
# 執行步驟
# ubuntu 內系統 Upgrade -> 先將系統由14.04
升到 16.04
```
sudo su
apt-get update
apt-get upgrade
apt-get dist-upgrade
do-release-upgrade
```
* 指令如上, 中間會跳一些問題供選擇
* 線上機器 Abort phpAdmin upgrade
- 此時 php為7.0
- 裝完之後會有
mariadb
設定的問題Errors were encountered while processing: mariadb-server-10.0
# 除錯
* `apt-get install mysql-server` -> 改裝 mysql 看起來就會把 mariadb 刪掉
* 需要確認到底用的是 mysql 還是 mariadb
* 線上機器用的是 `mariadb`
* `apt-get remove mysql-server` -> 再把她移除, 會有問題
* `apt-get install php7.1` -> 安裝相關的
* `apt-get autoremove && apt-get autoclean` -> 資源回收
* `apt-get install php7.1-fpm` -> 安裝 7.1 FPM
# 此時狀態為 php7.0
- 升級到 7.1
apt-get install php7.1
- 若找不到, 需要更新
apt-get install software-properties-common
add-apt-repository ppa:ondrej/nginx
- 若找不到, 需要更新
- 安裝相依的套件: 看缺什麼裝什麼
apt-get install php7.1-fpm
apt-get install php7.1-common
apt-get install php7.1-cli
apt-get install libpcre3
apt-get install mysql-server-5.7
apt-get install php7.1
- Mariadb 問題:
Package mariadb-server-10.0 is not configured yet.
- 估計需要重裝
apt-get remove --purge mariadb-server mariadb-client
apt-get autoremove
apt-get autoclean
apt-get install mariadb-server mariadb-client
# 安裝 php7.1-fpm
* 注意 `Nginx` 會指向新的位置
* 原先 `fastcgi_pass 127.0.0.1:9000;`
* 改為 `fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;`
- 檢查
/var/log/nginx/debug.log
看哪裡會有問題
502 Bad Gateway -> 上面那個
php7.1-fpm.sock
沒有設定好空白頁 ->
sites-avaliable/PROJECT.conf
內部需要加上一行cgi_param
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
最底下那行要補上, 白頁就消失了
location ~ \.php$ { include /path/to/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; }
1
2
3
4
5
6
# 登進去了, DB卻連線不到: 看起來是 Curl 問題
`fastCGI sent in stderr: "PHP message: PHP Fatal error: Un
caught ErrorException: cURL library is not loaded in /home/ubuntu/PROJECT/vendor/php-curl-class/php-curl-cl ass/src/Curl/Curl.php:103`
- 重裝 curl
sudo apt-get update && sudo apt-get install curl
sudo apt-get install php7.1-curl
- 重啟 Nginx
/etc/init.d/nginx restart
# Update
- 圖片上傳失敗問題
- 要裝 php-gd
sudo apt-get install php7.1-gd
/etc/init.d/nginx restart
- 要裝 php-gd
# Issue in production
- 線上 mysqli 連不到的問題
- ubuntu 要裝
php-mysql
apt-get install php7.1-mysqli
(php 7.1 的版本)
- ubuntu 要裝
# 結論:
- 主要幾個需要重裝的
apt-get install php7.1-mysqli
(php 7.1 的版本) - 資料庫才能正確連接apt-get install php7.1-gd
(圖片上傳功能) - php7.1-gd 需要重裝apt-get install php7.1-curl
CURL 連接問題 - php7.1-curl 要裝apt-get install php7.1-fpm
FPM 相關 - 裝完要設定apt-get install php7.1-mbstring
否則點進去會看不到文章
# 幾個可能要注意的點:
sudo apt-get upgrade
升級當下系統可能會很慢, loading 飆高