Aktualizácia PHP na OSX

Niekedy sa stane, že niektoré staršie OSX nemajú podporu novšieho alebo staršieho PHP. Riešenie je relatívne jednoduché.

Ak ste sa dostali do situácie, že k inštalácii PHP scriptu, frameworku a pod. potrebujte composer, môžete naraziť aj na situáciu, kde vaša aktuálna verzia PHP si nerozumie s daným scriptom. Niekedy sa Vám podarí presvedčiť composer jednotlivé závislosti opraviť, v opačnom prípade je jednoduchšie siahnuť po staršej verzii PHP.

Čo k tomu budeme potrebovať? Záleží od operačného systému. Linux a OSX majú veľa spoločného, napríklad Homebrew.

Inštalácia Homebrew

Prvé, čo budeme potrebovať je Homebrew.

Otvorte terminál (terminal.app). Ak nepoužívate alebo Vám nefunguje spotlight ⌘ + Medzerník, tak ju nájdete v /Applications/Utilities/Terminal.app

Do Termínalu vložte nasledovný príkaz:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Pre istotu skontrolujte aktuálnosť príkazu na stránke Homebrew.

Zistenie PHP verzie

Než začneme samotnou inštaláciou je fajn zistiť aktuálnu verziu PHP. Do terminálu vložte nasledovný príkaz:

php -v

Výsledný výstup vráti verziu nainštalovaného PHP. Môže to byť napr. PHP 7.1.18 a pod.

Príkaz PHP -v si zapamätajte, budeme ho ešte používať pre kontrolu či nám inštalácia prebehla úspešne.

Inštalácia PHP 7.4

Povedzme, že chceme verziu PHP 7.4. Do terminálu zadajte nasledovný príkaz:

brew install php@7.4

Tento príkaz spustí pomocou homebrew inštaláciu PHP verziu 7.4. Verziu je možné zmeniť, napr. na php@8.0 alebo php@8.1 a pod. Môžte nainštalovať aj staršie verzie.

Kým príkaz prebehne pripravte si čaj alebo kávu. Pokojne si pustite kratší seriál. Homebrew ide potrebné závislosti sťahovať a kompilovať. Taktiež užívatelia OSX musia nainštalovať Command Line Tools for Xcode o čom bude homebrew informovať.

Môže sa stať, že inštalácia v istom bode neprebehne. V mojom prípade to bolo kvôli staršej verzii curl v operačnom systéme. Ak máte starší operačný systém je dobré zmeniť konfiguráciu homebrew podľa dokumentácie. Konkrétne ide o HOMEBREW_FORCE_BREWED_CURL.

Sú dve možnosti:

export CURL_SSL_BACKEND=secure-transport

alebo zadaním HOMEBREW_FORCE_BREWED_CURL=1 pred príkaz brew

Napríklad:

HOMEBREW_FORCE_BREWED_CURL=1 brew cask install php@7.4

HOMEBREW_FORCE_BREWED_CURL=1 je možné zadať aj cez príkaz export.

Upozornenie! Toto nastavenie je platné len po dobu relácie daného terminálu. Je to esencia príkazu export.

Po úspešnom nainštalovaní vyžovanej PHP verzie zadáme príkaz:

brew link --force --overwrite php@7.4
brew services start php@7.4
export PATH="/usr/local/opt/php@7.4/bin:$PATH"
export PATH="/usr/local/opt/php@7.4/sbin:$PATH"

Ak sme mali nainštalovanú verziu PHP 8.1 a potrebujem verziu PHP 7.4, tak treba vykonať nasledovné príkazy:

brew unlink php@8.1
brew link php@7.4

Niekedy sa môže stať, že niečo nefunguje ako by malo. Skúste príkaz:

brew doctor

Na záver skontrolujte verziu PHP:

php -v

Ak Vám stále zobrazuje starú verziu PHP, tak skúste reštartovať apache službu. Najprv overme či nejaké služby bežia.

brew services list
brew services restart php@7.4

Ďalšia možnosť je si novú verziu PHP natrvalo uložiť pre terminál bez nutnosti opakovaného príkazu export. Viac poznámky.

Ak ste urobili všetko správne a nenastala nejaká zvláštna chyba, tak Vám príkaz vráti verziu PHP, ktorú potrebujte. V opačnom prípade skúste sledovať jednotlivé kroky a výpis v termináli. Obyčajne obsahuje užitočné informácie.

Poznámky

Môže sa stať, že termínal má uložené staré export adresy. V prípade ZSH môžeme skontrolovať:

nano ~/.zshrc

V prípade bash

nano ~/.bash_profile

kde treba upraviť export údaj:

# export PATH="/usr/local/opt/php@7.2/bin:$PATH"
# export PATH="/usr/local/opt/php@7.2/sbin:$PATH"
export PATH="/usr/local/opt/php@7.4/bin:$PATH"
export PATH="/usr/local/opt/php@7.4/sbin:$PATH"

Dá sa použiť aj príkaz echo, ktorý konfiguráciu rovno zapíše do požadovaného profilu. V tomto príklade pre bash voláme export PHP 8.0

echo 'export PATH="/usr/local/opt/php@8.0/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/php@8.0/sbin:$PATH"' >> ~/.bash_profile

Každá nová inštancia terminálu sa bude po tomto nastavení spúšťať s nastavením vybranej PHP verzie.

Alternatívne riešenie

Namiesto bojovanie s Homebrew a operačným systémom môžte skúsiť aj XAMPP, populárny localhost balík. Ten poskytuje možnosť inštalácie ako samostatnej aplikácie alebo VM (Virtuálneho počítača). Každá možnosť má svoje výhody aj nevýhody. XAMPP VM bohužiaľ nie je dostatočne izolovaný a je ťažké prepínať medzi jednotlivými verziami PHP, kde príkaz brew unlink a vzápätí brew link funguje lepšie.

Existujú aj iné alternatívy ako je napr. virtuálny kontajnér cez docker. O tom si však napíšeme inokedy.


Publikovaný

v

od