Я на Mac OSx, используя MAMP. Когда я запускаю команды git прямо в терминале, они работают как положено, без ошибок. Но я пишу скрипт на php, предназначенный для запуска некоторых команд git, и получаю следующую ошибку:
exec('cd /my/path/here/ 2>&1 && git init 2>&1', $out, $return);
возвращает:
Array
(
[0] => dyld: lazy symbol binding failed: Symbol not found: _iconv_open
[1] => Referenced from: /Applications/Xcode.app/Contents/Developer/usr/bin/git
[2] => Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib
[3] =>
[4] => dyld: Symbol not found: _iconv_open
[5] => Referenced from: /Applications/Xcode.app/Contents/Developer/usr/bin/git
[6] => Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib
[7] =>
)
Поиск дает кучу результатов (Вот например) объяснение, как это является проблемой OSx / MAMP, с исправлением, чтобы добавить export DYLD_LIBRARY_PATH=/usr/lib/
на ваш .bash_profile
, Но, как я уже сказал, у меня нет проблем с терминалом, я получаю ошибку только при вызове git из php exec()
, Я добавил DYLD_LIBRARY_PATH=...
к моему bash_profile
и это не имело никакого значения.
Звонит exec()
не ссылаться на мой bash_profile
, даже если Apache настроен на работу от моего обычного пользователя?
Если это работает, то я бы предположил, что exec не вызывает ваш bash_profile.
exec('export DYLD_LIBRARY_PATH=/usr/lib cd /my/path/here/ 2>&1 && git init 2>&1', $out, $return);
Других решений пока нет …