2016-03-02 15 views
9

Bevor ich frage, muss ich sagen, dass ich probiert haben jede ähnliche Frage hier auf Stapel und anderswo und ist fehlgeschlagen.PHP Compiler OpenSSL Fehler

Ich bin nicht in der Lage composer aufgrund dieses Fehlers zu verwenden:

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

I xampp auf ubuntu haben.

Was ich versucht habe:

  • Ich habe uncommented ;extension=php_openssl.dll in php.ini (beide cli und normal) - nicht
  • installiert openssl durch Terminal außerhalb von PHP nicht funktioniert - funktionierte nicht
  • Check-in phpinfo() wenn openssl wird geladen und aktiviert

enter image description here

  • und einige mehr wie Komponist runing durch php -c /opt/lampp/etc/php.ini composer.phar install wo bekomme ich Fehler

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

  • ich versucht habe PATH in bashrc zu ändern, kein Erfolg entweder

Was Ich habe seltsam gefunden, ist der Ort der Erweiterungen ...

In phpinfo() Erweiterung dir ist /usr/include/php5/ext/ obwohl ich eine andere dir in php.ini und natürlich Neustart Apache und immer noch nur knapp sein Ziel Show in phpinfo() angeben haben versucht.

Aber in php-config Befehl bekomme ich, dass Erweiterung dir/usr/local/lib/php/extensions/no-debug-non-zts-20100525

ist bin ich nicht sicher, ob ich mehrere PHP auf System haben, aber ich versuchte, für php.ini Dateien zu suchen und nur 2 kam.

/etc/php5/cli/php.ini 

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

Klingt wie Sie zwei verschiedene Installationen von PHP haben. Wahrscheinlich eine von XAMPP (/ usr/local) und eine von Ubuntu base (/ usr). Wenn dies der Fall ist, können Sie Ihren PATH so bearbeiten, dass er den gewünschten bevorzugt, oder Sie können den Pfad, den Sie nicht haben, einfach entfernen. –

+0

Ich habe versucht, nach 'php.ini' durch' find' zu suchen und fand einen in 'cli' und einen in'/opt/lampp/etc/php.ini' – JTC

+2

Um zu sehen, welche 'php.ini' Dateien benutzt werden bei deinem CLI run 'php -i | grep php.ini'. –

Antwort

2

Ich ziehe LAMP Stack gegen xamp installieren: es ist einfach und leicht Config-Paket ...

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 

Ihre Installation zu testen, führen:

composer 

mit diesem Befehl nicht erforderlich geänderte php.ini und etc.

1

Zuerst müssen Sie das richtige Bibliotheksdateisystem nach OS verstehen. In Windows haben die gemeinsam genutzten Bibliotheksdateien die Erweiterung DLL, und in Linux haben die gemeinsam genutzten Bibliotheksdateien die Erweiterung SO.

Wohin auch immer Sie die Änderungen in PHP.ini-Datei tut nicht richtig tun. Zuerst musst du den richtigen Ort von PHP finden. Da Apache-Dienst ausgeführt wird es einfach sein würde, den Ort laufen zu finden:

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

Der Schlüssel Linie in dieser Ausgabe der HTTPD_ROOT ist. Das definiert, wo Apache ROOT Verzeichnis zu starten ist, /etc/httpd in meinem Fall. Da wir den richtigen Speicherort von PHP finden müssen, öffnen Sie SERVER_CONFIG_FILE, die Unterverzeichnis "Conf" wie in meinem Fall wäre.

Suchen Sie in der Datei für env_module, die den richtigen Speicherort von PHP offen legen würde.

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

Öffnen Sie nun die Datei php.ini tun die erforderlichen Änderungen

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

Wenn das Problem dann nicht löst lassen Sie mich wissen.