2016-03-02 78 views
9

Zanim zapytam, muszę powiedzieć, że mam wypróbowałem każde podobne pytanie tutaj na stosie i gdzie indziej i nie powiodło się.Php composer openssl error

jestem w stanie korzystać composer powodu tego błędu:

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

mam xampp na ubuntu.

Co próbowałem:

  • mam odkomentowane ;extension=php_openssl.dll w php.ini (zarówno CLI i normalne) - nie działa
  • Zainstalowane OpenSSL pośrednictwem terminalu poza php - nie działa
  • Przyjazd phpinfo() jeśli openssl jest ładowany i aktywowany

enter image description here

  • i niewiele więcej jak runiczny kompozytora poprzez php -c /opt/lampp/etc/php.ini composer.phar install gdzie ja dostać błąd

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

  • Próbowałem zmienić PATH w bashrc, bez powodzenia albo

Co Znalazłem dziwne jest lokalizacja rozszerzeń ...

W phpinfo() rozszerzenia katalogu jest /usr/include/php5/ext/ chociaż starałem się określić inny dir w php.ini i restart apache i oczywiście jeszcze nie zrobił show w phpinfo().

Ale w komendzie php-config uzyskać przedłużenie reż że jest/usr/local/lib/php/extensions/no-debug-non-zts-20100525

Nie jestem pewien, czy mam wiele PHP na systemie, ale starałem się szukać plików php.ini i tylko 2 wymyślił.

/etc/php5/cli/php.ini 

/opt/lampp/etc/php.ini 
+0

Wygląda na to, że masz dwie różne instalacje PHP. Prawdopodobnie jeden z XAMPP (/ usr/local) i jeden z bazy Ubuntu (/ usr). W takim przypadku możesz zmodyfikować ścieżkę, aby wybrać tę, której chcesz, lub odinstaluj tę, której nie chcesz. –

+0

Próbowałem wyszukać 'php.ini' za pomocą polecenia' find' i znalazłem je w 'cli' i jednym w'/opt/lampp/etc/php.ini'' – JTC

+2

Aby sprawdzić, które pliki 'php.ini' są używane przez twój cli uruchom 'php -i | grep php.ini'. –

Odpowiedz

2

Wolę zainstalować LAMP stos vs. XAMP: to jest proste i łatwe pakiet config ...

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 

Aby przetestować swoją instalację, uruchom:

composer 

z tego polecenia nie wymagane Zmieniono php.ini i inne.

1

Przede wszystkim trzeba zrozumieć właściwy system plików bibliotecznych zgodnie z systemem operacyjnym. W systemie Windows współużytkowane pliki biblioteki mają rozszerzenie biblioteki DLL, a w systemie Linux współużytkowane pliki bibliotek mają rozszerzenie SO.

Wszędzie tam, gdzie robisz zmiany w pliku PHP.ini nie działa prawidłowo. Przede wszystkim musisz znaleźć poprawną lokalizację PHP. Ponieważ usługi apache działa byłoby to łatwe zadanie, aby znaleźć przebieg Lokalizacja:

$ 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" 

Kluczem linia w tym wyjściu jest HTTPD_ROOT. Określa, gdzie ma się rozpocząć katalog Apache ROOT, w moim przypadku /etc/httpd. Ponieważ musimy znaleźć poprawną lokalizację PHP, otwórz SERVER_CONFIG_FILE, która byłaby podkatalogiem "conf", tak jak w moim przypadku.

Wyszukaj w pliku dla env_module, który ujawniłby poprawną lokalizację PHP.

<IfModule env_module> 
    .... 
    SetEnv PHP_PEAR_SYSCONF_DIR "location of PHP" 
    SetEnv PHPRC "location of PHP" 
    .... 
</IfModule env_module> 

Teraz otwórz plik php.ini wykonać wymagane zmiany

;;;;;;;;;;;;;;;;;;;;;; 
; 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 

Jeśli problemu nie rozwiązuje pozwól mi znać.