io_stream.lo Ошибка 1 при установке расширения php

Я пытаюсь установить расширение mongo php на OSX 10.11, но команда:

sudo pecl установить монго

дает следующую ошибку:

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

person King Julien    schedule 03.10.2015    source источник
comment
Вы также изучали установку openssl?   -  person Filype    schedule 03.10.2015


Ответы (5)


Вам необходимо отключить безрутовый механизм Mac OSX El Capitán:

  1. Загрузитесь с Cmd-R
  2. Открытый терминал
  3. Тип 1_
  4. Перезагрузить

На Mac вам нужно установить Xcode и создать символическую ссылку для openssl, которая поставляется с Xcode, т.е.

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

то есть /usr/include/openssl указывает на библиотеку Xcode.

Создайте свою библиотеку mongo php.

Как только это будет сделано, вам нужно будет включить защиту без рута:

  1. Загрузитесь с Cmd-R
  2. Открытый терминал
  3. Введите csrutil enable
  4. Перезагрузить
person Patrix    schedule 04.10.2015
comment
Это определенно помогло мне закончить sudo pecl install mongo на последней версии OSX (я уже отключил root-доступ). +1 - person jpaljasma; 20.01.2016

evp — это высокоуровневые криптографические функции.

Попробуйте установить библиотеки разработки:

Ubuntu: sudo apt-get установить libssl-dev

CentOS: yum установить openssl-devel

Источник: Ошибка при установке драйвера mongo для PHP на amazon linux

person Filype    schedule 03.10.2015
comment
Здесь следует упомянуть две вещи... 1) я на Mac, а не на Ubuntu или Centos, и 2) openssl уже установлен и включен... - person King Julien; 03.10.2015
comment
Похоже, проблема очень похожа на stackoverflow.com/questions/29262848/ нет? - person Filype; 03.10.2015

Я использую OS X и имею пользовательскую сборку openssl в /usr/local/openssl

so:

ln -s /usr/local/openssl/include/openssl /usr/local/include/openssl
person baychae    schedule 10.08.2016

Решение Скотта Вирсдорфа, кажется, сработало для меня https://solitum.net/openssl-os-x-el-capitan-and-brew/

установить opnessl через brew

brew install openssl

Ссылка на openssl

$ cd /usr/local/include
$ ln -s ../opt/openssl/include/openssl
person ansarimofid    schedule 08.09.2016

person    schedule
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его сообщением — вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутация, вы сможете комментировать любой пост. - person Nullify; 05.10.2015
comment
@ 200OK, позвольте мне уточнить: если вы уже установили homebrew, вам не нужно возиться с csrutil. поскольку он позволяет изменять /usr/local. Я думаю, что это распространено, поскольку большинство из нас используют homebrew или macports и т. Д. Этот ответ является правильным без перезагрузки или запуска csrutil. (я тестировал El-capitan 10.11.2, homebrew 0.9.5 для PHP7 для драйвера mongodb 1.2 для ветки PHP7 и, конечно, с успехом) - person risyasin; 12.12.2015
comment
Возможно, в вашей системе установлена ​​другая версия openssl, и поэтому вам нужно изменить путь во второй команде. - person sepehr; 15.01.2016