Ошибка php-композитора opensl

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

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

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

У меня есть xampp на ubuntu .

То, что я пробовал:

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

Я предпочитаю устанавливать LAMP stack vs. 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 . Это определяет, где должен запускаться каталог ROOT Apache, /etc/httpd в моем случае. Поскольку нам нужно найти правильное расположение PHP open 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 

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