Ошибка 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 загружено и активировано

введите описание изображения здесь

  • и еще несколько, например, запуск композитора через 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() каталог равен /usr/include/php5/ext/, хотя я пытался указать другой каталог в php.ini и, конечно же, перезапустить apache и все еще не отображался в phpinfo().

Но в команде php-config я получаю, что каталог расширения /usr/local/lib/php/extensions/no-debug-non-zts-20100525

Я не уверен, есть ли у меня несколько php в системе, но я попытался найти файлы php.ini, и появилось только 2.

/etc/php5/cli/php.ini

/opt/lampp/etc/php.ini

person JTC    schedule 02.03.2016    source источник
comment
Похоже, у вас две разные установки PHP. Вероятно, один из XAMPP (/usr/local) и один из базы Ubuntu (/usr). Если это так, вы можете отредактировать свой PATH, чтобы предпочесть тот, который вам нужен, или просто удалить тот, который вам не нужен.   -  person Alex Howansky    schedule 02.03.2016
comment
Я попытался найти команды с php.ini по find и нашел одну в cli и одну в /opt/lampp/etc/php.ini   -  person JTC    schedule 02.03.2016
comment
Чтобы посмотреть, какие php.ini файлы используются вашим cli, запустите php -i | grep php.ini.   -  person Pᴇʜ    schedule 03.03.2016
comment
пробовали запускать php5enmod openssl из командной строки?   -  person    schedule 15.03.2016
comment
php_openssl.dll относится к Windows, а не к *nix   -  person Jeff    schedule 15.03.2016
comment
@btl php5enmod openssl не помог   -  person JTC    schedule 15.03.2016
comment
Отмените все изменения, которые вы сделали в файлах php.ini, и просто выполните следующие шаги tutsnare.com/how-to-install-laravel-on-ubuntu-lamp   -  person Axalix    schedule 17.03.2016


Ответы (2)


Я предпочитаю устанавливать стек LAMP вместо 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 и т. д.

person Saeid    schedule 20.03.2016

Прежде всего, вы должны понимать правильную систему библиотечных файлов в соответствии с ОС. В 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

Если проблема не решится, дайте мне знать.

person Vineet1982    schedule 18.03.2016