2015-10-03 12 views
7

Próbuję zainstalować Mongo rozszerzenie php na OSX 10.11 ale polecenie:io_stream.lo Błąd 1 podczas instalacji rozszerzenia php

sudo pecl install mongo

daje następujący błąd:

... 
In file included from /private/tmp/pear/install/mongo/io_stream.c:34: 
/private/tmp/pear/install/mongo/contrib/php-ssl.h:33:10: fatal error: 'openssl/evp.h' file not found 
#include <openssl/evp.h> 
     ^
1 error generated. 
make: *** [io_stream.lo] Error 1 
ERROR: `make' failed 
+0

Pan spojrzał na zainstalowanie OpenSSL, jak również? – Filype

Odpowiedz

0

evp is high-level cryptographic functions.

Try to install development libraries:

Ubuntu: sudo apt-get install libssl-dev

CentOS: yum install openssl-devel

Źródło: Error while installing mongo driver for PHP on amazon linux

+1

Dwie rzeczy powinny być tu wymienione ... 1) Jestem na mac nie ubuntu lub centos i 2) openssl jest już zainstalowany i włączony ... –

+0

Brzmi jak bardzo podobny problem do http://stackoverflow.com/questions/29262848/error-while-installation-mongo-driver-for-php-on-amazon-linux nie? – Filype

8

Musisz wyłączyć mechanizm rootless Mac OSX El Capitán:

  1. Boot z Cmd-R
  2. Otwórz Terminal
  3. Type csrutil disable
  4. Reboot

Na Mac, trzeba zainstalować Xcode i budować dowiązania dla openssl wyposażony Xcode, tj.

cd /usr/include; 
sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr/include/openssl . 

tj. . /usr/include/openssl wskazuje na bibliotekę Xcode.

Zbuduj swoją bibliotekę php mongo.

Po to się robi, trzeba mieć, aby umożliwić rootless ochronę bezpieczeństwa:

  1. rozruchu z CMD-R
  2. Otwórz Terminal
  3. Rodzaj csrutil enable
  4. Reboot
+0

To zdecydowanie pomogło mi uzyskać 'sudo pecl install mongo' ukończone na najnowszym OSX (miałem już wyłączone rootload). +1 – jpaljasma

+0

Zostałem uderzony tutaj przez cały dzień, a to działało .... thx –

14
  1. brew install openssl
  2. ln -s /usr/local/Cellar/openssl/1.0.2d_1/include/openssl /usr/local/include/openssl
+1

To nie zapewnia odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem - zawsze możesz komentować swoje posty, a gdy już masz wystarczającą [reputację] (http://stackoverflow.com/help/whats-reputation), być w stanie [komentować dowolny wpis] (http://stackoverflow.com/help/privileges/comment). – Nullify

+0

@ 200OK pozwól mi wyjaśnić: jeśli już zainstalowałeś homebrew, nie potrzebujesz bałaganu z csrutil. ponieważ pozwala na modyfikację/usr/local. Myślę, że jest to powszechne, ponieważ większość z nas używa homebrew lub macports itp. Ta odpowiedź jest poprawna bez restartu lub uruchamiania csrutil. (testowałem z El-capitanem 10.11.2, homebrew 0.9.5 dla PHP7 dla sterownika mongodb 1.2 dla gałęzi PHP7 i oczywiście z powodzeniem) – risyasin

+0

Jest możliwe, że inna wersja openssl zostanie zainstalowana w twoim systemie i dlatego musisz zmienić ścieżka na drugim rozkazie. – sepehr

0

Używam OS X i mają zwyczaj budowania OpenSSL w/usr/local/openssl

tak:

ln -s /usr/local/openssl/include/openssl /usr/local/include/openssl