Ошибка Php composer в openssl
Прежде чем задать вопрос, я должен сказать, что я пробовал каждый подобный вопрос здесь в стеке и в других местах и потерпел неудачу.
Я не могу использовать composer
из-за этой ошибки:
requires ext-openssl * -> the requested PHP extension openssl is missing from your system.
У меня есть xampp
на ubuntu
.
Что я пробовал:
- Я раскомментировал
;extension=php_openssl.dll
вphp.ini
(как cli, так и обычный) - не сработало - Установил openssl через терминал за пределами php - не работал
- Проверьте
phpinfo()
, загружен лиopenssl
и активированный
- и еще несколько таких, как запуск composer через
php -c /opt/lampp/etc/php.ini composer.phar install
, где я получаю ошибку
PHP Warning: PHP Startup: Unable to load dynamic library /usr/include/php5/ext/php_openssl.so - /usr/include/php5/ext/php_openssl.so: cannot open shared object file: No such file or directory in Unknown on line 0
- Я пытался изменить
PATH
вbashrc
, тоже безуспешно
Что мне показалось странным, так это расположение расширений...
В phpinfo()
расширение dir равно /usr/include/php5/ext/
, хотя я пытался указать другой каталог в php.ini
и, конечно, перезапустить apache и все еще не отображался в phpinfo()
.
Но в команде php-config
я получаю, что расширение dir равно /usr/local/lib/php/extensions/no-debug-non-zts-20100525
Я не уверен, есть ли у меня несколько php в системе, но я попытался найти файлы php.ini, и появилось только 2.
/etc/php5/cli/php.ini
/opt/lampp/etc/php.ini
2 answers
Я предпочитаю устанавливать лампу стек против xamp: это простой и удобный конфигурационный пакет...
sudo apt-get install apache2
sudo apt-get install curl php5-cli php5 libapache2-mod-php5 php5-openssl
sudo /etc/init.d/apache2 restart
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Чтобы протестировать установку, выполните:
composer
С помощью этой команды не требуется изменять php.ini и т. Д.
Прежде всего, вы должны понять правильную библиотечную файловую систему в соответствии с операционной системой. В Windows файлы общей библиотеки имеют расширение DLL, а в Linux файлы общей библиотеки имеют расширение SO.
Везде, где вы вносите изменения в файл PHP.ini, это неправильно. Прежде всего, вам нужно найти правильное местоположение PHP. Поскольку служба apache запущена, было бы легко найти местоположение запуска:
$ httpd -V
Server version: Apache/2.2.17 (Unix)
Server built: Dec 17 2010 11:58:24
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.12, APR-Util 1.3.9
Compiled using: APR 1.3.12, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Ключевой строкой в этом выводе является HTTPD_ROOT
. Это определяет, где должен начинаться каталог Apache ROOT
, /etc/httpd
в моем случае. Поскольку нам нужно найти правильное расположение PHP
, откройте SERVER_CONFIG_FILE
, который будет подкаталогом "conf", как в моем случае.
Найдите в файле env_module
, который раскрывал бы правильное местоположение PHP.
<IfModule env_module>
....
SetEnv PHP_PEAR_SYSCONF_DIR "location of PHP"
SetEnv PHPRC "location of PHP"
....
</IfModule env_module>
Теперь откройте файл PHP.ini и внесите необходимые изменения
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
;
; If you only provide the name of the extension, PHP will look for it inits
; default extension directory.
;
extension=php_openssl.so
Если проблема не будет решена, дайте мне знать.