Я пытаюсь установить PHP 5.4 с PHPBrew, но у меня есть следующие ошибки:
-> % phpbrew install 5.4.6 +default +apxs2 +mysql
===> phpbrew will now build 5.4.6
===> Loading and resolving variants...
Checking distribution checksum...
Checksum matched: c9aa0f4996d1b91ee9e45afcfaeb5d2e
===> Distribution file was successfully extracted, skipping...
Found existing Makefile, running make clean to ensure everything will be rebuilt.
You can append --no-clean option after the install command if you don't want to rebuild.
===> Running make clean: /usr/bin/make -C '/home/breq/.phpbrew/build/php-5.4.6' --quiet 'clean'
===> Checking patches...
Checking patch for replace apache php module name with custom version name
0 changes patched.
Found existing build.log, renaming it to /home/breq/.phpbrew/build/php-5.4.6/build.log.1466515643
===> Configuring 5.4.6...Use tail command to see what's going on:
$ tail -F /home/breq/.phpbrew/build/php-5.4.6/build.log===> Checking patches...
Checking patch for php5.3.29 multi-sapi patch.
Checking patch for php5.3.x on 64bit machine when intl is enabled.
Checking patch for openssl dso linking patch
===> Building...
Error: Make failed:
The last 5 lines in the log file:
/home/breq/.phpbrew/build/php-5.4.6/ext/openssl/xp_ssl.c:355: undefined reference to `SSLv3_server_method'
/home/breq/.phpbrew/build/php-5.4.6/ext/openssl/xp_ssl.c:343: undefined reference to `SSLv3_client_method'
collect2: error: ld returned 1 exit status
Makefile:244: recipe for target 'sapi/cli/php' failed
make: *** [sapi/cli/php] Error 1
Please checkout the build log file for more details:
tail /home/breq/.phpbrew/build/php-5.4.6/build.log
С +openssl
-> % phpbrew install 5.4.6 +default +apxs2 +mysql +openssl=/usr/include/openssl
===> phpbrew will now build 5.4.6
===> Loading and resolving variants...
Checking distribution checksum...
Checksum matched: c9aa0f4996d1b91ee9e45afcfaeb5d2e
===> Distribution file was successfully extracted, skipping...
Found existing Makefile, running make clean to ensure everything will be rebuilt.
You can append --no-clean option after the install command if you don't want to rebuild.
===> Running make clean: /usr/bin/make -C '/home/breq/.phpbrew/build/php-5.4.6' --quiet 'clean'
===> Checking patches...
Checking patch for replace apache php module name with custom version name
0 changes patched.
Found existing build.log, renaming it to /home/breq/.phpbrew/build/php-5.4.6/build.log.1466516015
===> Configuring 5.4.6...Use tail command to see what's going on:
$ tail -F /home/breq/.phpbrew/build/php-5.4.6/build.logError: Configure failed:
The last 5 lines in the log file:
checking for Kerberos support... no
checking for DSA_get_default_method in -lssl... no
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
Please checkout the build log file for more details:
tail /home/breq/.phpbrew/build/php-5.4.6/build.log
Моя ОС: Xubuntu 16.10
+ PHP 7.07
-> % tail /home/lmalicki/.phpbrew/build/php-5.4.6/build.log
checking whether to enable LIBXML support... yes
checking libxml2 install dir... /usr
checking for xml2-config path... /usr/bin/xml2-config
checking whether libxml build works... yes
checking for OpenSSL support... yes
checking for Kerberos support... no
checking for DSA_get_default_method in -lssl... no
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
Поскольку директива + openssl фактически обеспечивает префикс, а не путь включения, попробуйте
+openssl=/usr -- --with-libdir=lib64
Я выгляжу так, как будто тебе не хватает некоторых зависимостей.
Попробуйте сначала установить пакет ssl dev:
apt-get install libssl-dev
PHPBrew просто загружает и компилирует php, но не устанавливает необходимые зависимости в вашей ОС.
РЕДАКТИРОВАТЬ:
Я только что заметил, что вы указали путь к библиотеке openssl в +openssl=/usr/include/openssl
,
Вы уверены, что это там? Вы можете проверить это с which openssl
, Эта команда вернет путь к бинарному файлу openssl.
Также вы можете попытаться просто удалить путь, так как PHPBrew должен сам найти правильный двоичный файл.
configure: error: Cannot find OpenSSL's <evp.h>
Эта проблема может возникнуть, если у вас установлена более новая версия OpenSSL, чем ваш дистрибутив.
Если вы используете Ubuntu, вам может потребоваться вернуть свои пакеты обратно. (но, вероятно, вы установили другую версию по какой-то причине, поэтому будьте осторожны здесь)
#file etc/apt/preferences.d/allow-downgrade
Package: *
Pin: release o=Ubuntu
Pin-Priority: 1001
затем
sudo apt-get update
sudo apt-get upgrade
и варианты
-- --with-openssl=/path/to/libs
или же
+openssl
должно работать просто отлично.
Если у вас уже есть какой-то неправильно работающий PHP, установленный из PHPbrew, не забудьте переключиться с
phpbrew switch recently_installed_php_ver_number_here
На Ubuntu 16.10
sudo apt-get install libssl-dev
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install clibcurl4-openssl-dev pkg-config libssl-dev libsslcommon2-dev
затем повторите
phpbrew install 5.4.6 +default +apxs2 +mysql +openssl=/usr/include/openssl