apache — ошибка openssl в php composer

Прежде чем спросить, я должен сказать, что у меня есть пытался каждый подобный вопрос здесь, в стеке и в других местах и ​​не удалось.

Я не могу использовать composer из-за этой ошибки:

requires ext-openssl * -> the requested PHP extension openssl is missing from your system.

я имею xampp на ubuntu,

Что я пробовал:

  • Я оставил комментарий ;extension=php_openssl.dll в php.ini (и кли и нормаль) — не сработало
  • Установил 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() расширение 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

9

Решение

Я предпочитаю устанавливать ФОНАРЬ стек против 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 и т. д.

2

Другие решения

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

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

1

По вопросам рекламы [email protected]