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:

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ć poleceniabrew --prefix imagemagick
- dla rozszerzenia
amqp
należy użyć poleceniabrew --prefix rabbitmq-c
- dla rozszerzenia
rdkafka
należy użyć poleceniabrew --prefix librdkafka