Tech: Brew PHP Upgrade

Aku tak pasti kenapa dan mengapa diorang tukar kaedah simpan keg untuk php daripada php71 kepada [email protected]. Mungkin disebabkan pertukaran daripada homebrew/php kepada homebrew/core cuma aku perasan beberapa perkara;

Tidak konsistan

[email protected] untuk php 7.1 tetapi php untuk php 7.2. Apa akan jadi jika php 7.3 atau 8.0 keluar?

non suffix php version brew
https://github.com/Homebrew/homebrew-core/pull/26137#pullrequestreview-109196492

Library asas telah dimasukkan sekali

jika dulu perlu brew install php71-intl kini tidak perlu kerana intl telah dimasukkan secara automatik. Dan ini juga menyebabkan ralat tidak perlu jika anda mempunyai external config sebelum ini.

Sukar untuk membuat pertukaran versi php

Disebabkan kaedah baru ini, agak sukar untuk membuat pertukaran antara versi dan kita perlu berjaga-jaga dengan tetapan sistem apabila keluarnya versi terkini PHP contohnya;

  • sekarang versi terkini php 7.2 – nama direktori php 7.2 => php
  • akan datang versi terkini php 7.3 – nama direktori php 7.2 => [email protected]

Maka semua projek yang menggunakan versi 7.2 yang tidak berhajat untuk masuk ke versi 7.3 perlu menukar tetapan php.

Secara positifnya, kita akan memastikan sistem kita sentiasa boleh dijalankan pada php yang terkini. Cuma, tidak semua klien boleh membuat kemaskini php versi terkini terutamanya badan kerajaan ehem.

Dan dengan ini juga, semasa menjalankan arahan composer, anda harus berhati-hati dengan versi php di cli. Aku gunakan tetapan interpreter dalam phpstorm. Jika tidak aku cadangkan membuat alias kepada setiap versi yang mahu digunakan.

Ralat

path

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.bash_profile

Sila pastikan di dalam .bash_profile anda telah diletakkan pada versi yang mahu digunakan.

library, extension

/usr/local/etc/httpd/httpd.conf: Cannot load /usr/local/Cellar/php71/7.1.12_23/libexec/apache2/libphp7.so into server: dlopen(/usr/local/Cellar/php71/7.1.12_23/libexec/apache2/libphp7.so, 10): image not found

Disebabkan beberapa extension telah dimasukkan secara automatik dan dijalankan terus, anda perlu memastikan external configuration (dalam kes ini httpd.conf) atau autoloader tidak memanggil semula extension tersebut.

Periksa juga di dalam <span class="s1">/usr/local/etc/php untuk memastikan tiada konfigurasi lain yang mengganggu.

brew php remove autoloader
https://github.com/Homebrew/homebrew-php/issues/4826#issuecomment-377548781

Anda hanya perlu membuat komen atau memadamkan baris yang memanggil extension tersebut.

Notakaki: jika anda tidak mempunyai sebarang keperluan untuk upgrade, jangan upgrade. Guna apa yang ada.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.