Прежде чем спросить, я должен сказать, что я пробовал каждый аналогичный вопрос здесь, в стеке и в другом месте, и не смог.
Из-за этой ошибки я не могу использовать composer
:
requires ext-openssl * -> the requested PHP extension openssl is missing from your system.
У меня есть xampp
на ubuntu
.
То, что я пробовал:
;extension=php_openssl.dll
в php.ini
(оба cli и normal) – не работал 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
Если проблема не решена, дайте мне знать.