it-roy-ru.com

dyld: привязка ленивого символа не удалась: символ не найден: _clock_gettime - в mongodb laravel

Я использую версию Laravel 5.4 для реализации CRUD-операции mongodb с использованием link . Я использую Mac OS El Captain 10.11. Я установил расширение mongodb.so с версией php 7.1.16

В то время как я пытаюсь получить красноречивое соединение, он выбрасывает меня ERR_EMPTY_RESPONSE

У меня есть digg в деталях найден следующий журнал ошибок в Apache во время перезапуска сервера MAMP

 Mon Aug 28 10:22:14 2017] [notice] Graceful restart requested, doing restart
[Mon Aug 28 10:22:15 2017] [notice] Digest: generating secret for digest authentication ...
[Mon Aug 28 10:22:15 2017] [notice] Digest: done
[Mon Aug 28 10:22:15 2017] [notice] Apache/2.2.31 (Unix) mod_wsgi/3.5 
 Python/2.7.13 PHP/7.1.1 mod_ssl/2.2.31 OpenSSL/1.0.2j DAV/2 
mod_fastcgi/2.4.6 mod_Perl/2.0.9 Perl/v5.24.0 configured -- resuming normal operations
[Mon Aug 28 10:22:15 2017] [notice] FastCGI: process manager initialized (pid 4233)
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
Referenced from: 
/Applications/MAMP/bin/php/php7.1.1/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so
Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _clock_gettime
Referenced from: 
/Applications/MAMP/bin/php/php7.1.1/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so
Expected in: /usr/lib/libSystem.B.dylib

dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
Referenced from: 
 /Applications/MAMP/bin/php/php7.1.1/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so
 Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _clock_gettime
Referenced from: 
/Applications/MAMP/bin/php/php7.1.1/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so
 Expected in: /usr/lib/libSystem.B.dylib

Этот снимок экрана показывает детали расширения mongodb  enter image description here Я искал в Интернете ошибку dyld: lazy symbol binding failed: Symbol not found: _clock_gettime и нашел этот ответ . Я применил все шаги, которые я упомянул, но не смог решить проблему.

Пожалуйста, кто-нибудь, помогите мне избавиться от этого.

8
Chintan7027

Прежде всего вам необходимо обновить ОС до MacOS Sierra, (я использую версию 10.12)

clock_gettime не был предоставлен в El Capitain,

Apple (наконец) представила API posix clock_gettime в Сьерре. Наш скрипт configure обнаруживает это и позволяет использовать его. Поскольку бинарный файл не выполняется в Sierra, а вместо этого в El Capitain, где эта функциональность не существует, связывание во время выполнения не выполняется. Использование предложенного вами обходного пути не является хорошим решением. Казалось бы, это может сработать, но не исключено, что позже вы получите странные сбои, так как двоичный файл не скомпилирован для системы, в которой он выполняется.

Ссылка от: https://bugs.erlang.org/browse/ERL-256

4
Mehul Panchasara

Это будет постоянно меняющийся ответ, когда мы решим вашу проблему. 

Начните с этого в terminal:

brew update && brew upgrade && brew doctor
0
black_sheep07

Последние версии php {XX} -mongodb, установленные из homebrew, основаны на использовании специального символа OS X 10.12, называемого _clock_gettime, которого не было в OS X <10.12.

Обновление вашей системы решит эту проблему, но у вас могут быть некоторые valid причины не желать обновлять ее.

В настоящее время выполняется предварительная проверка для сохранения совместимости с OS X 10.11:

https://github.com/Homebrew/homebrew-php/issues/3737

https://github.com/Homebrew/homebrew-php/pull/3890

Хотя это не принято, вы можете самостоятельно взломать формулу phpXX-mongodb, как хорошо предложено здесь @adocwang :

(Обязательно сначала установите инструменты xcode-select)

Sudo xcode-select --install
# Or if you already installed it
softwareinstall --install -a

Затем отредактируйте формулу php {XX} -mongodb (это будет php71-mongogb, php56-mongodb или любая PHP версия, которую вы используете)

brew edit php{XX}-mongodb

Найдите строку «def install» и замените

def install
  Dir.chdir "mongodb-#{version}" unless build.head?

От

def install
  Dir.chdir "mongodb-#{version}" unless build.head?

  if MacOS.version == "10.11" && MacOS::Xcode.installed? && MacOS::Xcode.version >= "8.0"
    inreplace %w[src/libbson/src/bson/bson-clock.c], "HAVE_CLOCK_GETTIME", "UNDEFINED_GIBBERISH"`
  end

Затем принудительно переустановите эту формулу из источника

brew reinstall -s php{XX}-mongodb
0
Flo Schild