- ประเด็นคือย้าย Codeignitor 4 จาก PHP 7.4 ที่ Server เครื่องเก่าไป VM เครื่องใหม่
- โดย Server ตัวใหม่ลง apache2 + PHP 8.1 ไว้ใช้งานแล้ว แต่ CI4 เค้าว่ามีปัญหากับ PHP 8.1 ซะงั้น
- https://stackoverflow.com/questions/70285088/uncaught-errorexception-strtolower-passing-null-to-parameter-1-string-of
- เค้าแนะนำให้ใช้ PHP 8.0 พอ
- ที่ทำอยู่นิ ใช้ Apache2 นะคับ
Solved
- add repo ก่อนถึงจะติดตั้ง php8.0 ได้เพราะ 22.04 ค่าเริ่มของ repo เค้าได้ php8.1 นะ
$ sudo add-apt-repository ppa:ondrej/php$ sudo apt update
- ติดตั้ง php8.0 และ package ที่จำเป็น
sudo apt install php8.0 php8.0-common php8.0-cli
sudo apt install php8.0-bcmath php8.0-bz2 php8.0-curl php8.0-intl php8.0-mbstring php8.0-mysql php8.0-readline php8.0-xml php8.0-zip php8.0-gd php8.0-gmp
- เปิดใช้งาน php8.0 (a2enmod ใช้ได้เฉพาะ ลง apache แล้วเท่านั้น)
sudo a2enmod php8.0
- ปิดการใช้งาน php8.1 (a2dismod ใช้ได้เฉพาะ ลง apache แล้วเท่านั้น)
sudo a2dismod php8.1
- สลับให้ Ubuntu ไปใช้ lib ของ php8.0 เป็นค่าเริ่มต้น
sudo update-alternatives --set php /usr/bin/php8.0
- restart apache ซะหน่อย
sudo /etc/init.d/apache2 restart หรือ $ sudo systemctl restart apache2
Add
- ถ้าเราต้องการใช้ downgrade ไปที่ 7.4 ก็เปลี่ยนจาก 8.0 เป็น 7.4 ในคำสั่งด้านบนเท่านั้น
- server ใหม่ในที่นี้ใช้ Ubuntu 22.04 ตัวเก่าใช้ 18.04
- เช็ค version php ที่ระบบใช้อยู่ปัจจุบัน
sudo php -v
Ref
- https://juuier.blogspot.com/2020/09/rewrite-urls-with-modrewrite-for-apache.html
- https://juuier.blogspot.com/2021/06/update-to-php-74-on-ubuntu-1804.html
- https://juuier.blogspot.com/2021/09/scp-copy-tool-ubuntu-2004.html