Wolę pracować z #Dockerem, ale czasami wymagane jest posiadanie #PHP lokalnie, a nawet więcej – wielu jego wersji! Jest prosty sposób na osiągnięcie tego: ASDF 😎.

Przede wszystkim musisz zainstalować asdf za pomocą wybranej metody, a następnie dodać to do ~/.zshrc:

export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"

Pliki shim ASDF muszą być wykrywalne przed innymi plikami binarnymi na Twoim komputerze, aby obsługiwać wywołania narzędzi i rozpoznawać żądaną wersję (bez obaw, możliwe jest również powrót do wersji systemowych).

Następnym krokiem jest włączenie wtyczki PHP:

asdf plugin add php

Instalacja wersji PHP jest naprawdę prosta – wystarczy uruchomić polecenie asdf install php 8.4.10, a następnie w dowolnym katalogu, w którym chcesz używać tej wersji: asdf set php 8.4.10. Idea ASDF polega na tym, że przechowuje on plik .tool-versions z listą wersji, które muszą być używane w tym katalogu i jego podkatalogach. Wygląda to tak:

php 8.4.10
nodejs 24.4.0

Jeśli używasz p10k, możesz nawet zobaczyć, jaka wersja PHP jest skonfigurowana dla konkretnego katalogu, w którym aktualnie się znajdujesz:

Wyświetlanie wersji narzędzi ASDF w wierszu poleceń p10k

Jeśli chodzi o PHP, przed zainstalowaniem pierwszej wersji najprawdopodobniej musisz zainstalować biblioteki systemu operacyjnego, aby ASDF mógł skompilować PHP ze źródeł. W moim przypadku, na nowo skonfigurowanym MacBooku, musiałem uruchomić:

brew install autoconf bison gd icu4c@77 libiconv libsodium libzip pkgconf re2c

Aby uniknąć błędów kompilacji związanych z SSL, podczas instalacji PHP należy przekazać kilka opcji konfiguracyjnych:

PHP_CONFIGURE_OPTIONS="--with-openssl=$(brew --prefix openssl) --with-iconv=$(brew --prefix libiconv)" asdf install php 8.4.10

Używając PHP_CONFIGURE_OPTIONS, możesz modyfikować przebieg procesu kompilacji PHP. Jest to bardzo wydajne i elastyczne rozwiązanie, ale co najważniejsze, może rozwiązać problemy, gdy instalacja PHP wymaga wielu dodatkowych rozszerzeń (takich jak imagick, grpc lub innych).

Po skompilowaniu i uruchomieniu wersji PHP, możesz zainstalować kolejne rozszerzenia za pomocą PECL lub PIE. Podczas instalacji może być konieczne podanie ścieżek do bibliotek używanych przez te rozszerzenia – wystarczy użyć polecenia brew --prefix <lib> w osobnym terminalu, aby móc skopiować i wkleić poprawną ścieżkę. Czasami może to być trudne, ponieważ nazwy pakietów Homebrew niekoniecznie odpowiadają nazwom rozszerzeń. Oto przykładowe mapowania:

  • dla rozszerzenia imagick należy użyć polecenia brew --prefix imagemagick
  • dla rozszerzenia amqp należy użyć polecenia brew --prefix rabbitmq-c
  • dla rozszerzenia rdkafka należy użyć polecenia brew --prefix librdkafka