2015-10-03 23 views
7

Tôi đang cố gắng để cài đặt phần mở rộng php Mongo trên OSX 10.11 nhưng lệnh:io_stream.lo Lỗi 1 khi cài đặt php mở rộng

sudo pecl install mongo

cung cấp cho các lỗi sau:

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

Các bạn nhìn vào cài đặt openssl không? – Filype

Trả lời

0

evp is high-level cryptographic functions.

Try to install development libraries:

Ubuntu: sudo apt-get install libssl-dev

CentOS: yum install openssl-devel

Nguồn: Error while installing mongo driver for PHP on amazon linux

+1

Hai điều cần được đề cập ở đây ... 1) Tôi đang ở trên mac không ubuntu hoặc centos và 2) openssl đã được cài đặt và kích hoạt ... –

+0

Âm thanh như một vấn đề rất giống với http://stackoverflow.com/questions/29262848/lỗi-trong khi-cài đặt-mongo-driver-cho-php-on-amazon-linux không? – Filype

8

Bạn cần vô hiệu hóa cơ chế không có gốc Mac OSX El Capitán:

  1. Boot với Cmd-R
  2. Mở Terminal
  3. Loại csrutil disable
  4. Khởi động lại

Trên máy Mac, bạn cần phải cài đặt Xcode, và xây dựng các liên kết tượng trưng cho openssl đi kèm với Xcode, tức là

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

ie /usr/include/openssl trỏ tới thư viện Xcode.

Xây dựng thư viện php mongo của bạn.

Một khi nó được thực hiện, bạn cần phải kích hoạt tính năng bảo vệ an ninh rễ:

  1. Boot với Cmd-R
  2. Mở Terminal
  3. Loại csrutil enable
  4. Khởi động lại
+0

Điều này chắc chắn đã giúp tôi để có được 'sudo pecl cài đặt mongo' hoàn thành trên OSX mới nhất (tôi đã vô hiệu hóa rootless). +1 – jpaljasma

+0

Tôi đã bị tấn công ở đây cả ngày, và điều này đã thực hiện thủ thuật .... thx –

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

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – Nullify

+0

@ 200OK hãy để tôi làm rõ: Nếu bạn đã cài đặt homebrew, bạn không cần phải lộn xộn với csrutil. vì nó cho phép/usr/local được sửa đổi. Tôi nghĩ rằng điều này là phổ biến vì hầu hết chúng ta sử dụng homebrew hoặc macports vv câu trả lời này là đúng mà không cần khởi động lại hoặc chạy csrutil. (tôi đã thử nghiệm với El-capitan 10.11.2, homebrew 0.9.5 cho PHP7 cho driver mongodb 1.2 cho nhánh PHP7 và dĩ nhiên là thành công) – risyasin

+0

Có thể phiên bản openssl khác nhau được cài đặt trên hệ thống của bạn và do đó bạn cần phải thay đổi đường dẫn trên lệnh thứ hai. – sepehr

0

Tôi đang sử dụng OS X và có một tùy chỉnh xây dựng của openssl trong/usr/local/openssl

vậy:

ln -s /usr/local/openssl/include/openssl /usr/local/include/openssl 
Các vấn đề liên quan