2

Я только что обновил свою ОС до Mountain Lion, и PECL больше не работает (он на тестовом диске, так что ничего страшного, но я бы хотел, чтобы он работал, чтобы я мог обновить ОС и на своем новом SSD).

Я использую нативную установку PHP, без macports/homebrew или чего-то подобного.

Запуск sudo pecl install uploadprogress (например) приводит к следующему выводу терминала:

downloading uploadprogress-1.0.3.1.tgz ...
Starting to download uploadprogress-1.0.3.1.tgz (9,040 bytes)
.....done: 9,040 bytes
4 source files, building
running: phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
autom4te: need GNU m4 1.4 or later: /usr/bin/m4
ERROR: `phpize' failed

Я предполагаю, что проблема в 3-х линиях grep . Я нашел несколько потоков , которые предлагают это вызвано XCode не установлено ... но установлено XCode и обновлен до последней версии (4.4). Все соответствующие символические ссылки на /Developer/usr/bin/* также существуют как и должны.

m4 в настоящее время имеет версию: m4 (GNU M4) 1.4.13 , поэтому, несмотря на то, что вышеприведенный вывод содержит строку, относящуюся к нему, я не думаю, что это может быть проблемой.

Я уверен, что это просто вопрос, у кого-нибудь есть какие-нибудь подсказки?

4 ответа4

2

Попробуйте установить следующую команду (измените ваш путь соответственно), например:

M4=/Developer/usr/bin/m4 pecl install uploadprogress
1

Оказалось что-то смехотворно простое.

m4 теперь находится в /usr /local /bin /m4, что-то (может быть, autom4te?) искал это в /usr /bin /m4. Быстрая символическая ссылка хорошо решила проблему.

1

Оказывается, вам, возможно, придется согласиться с условиями XCode для M4. Для этого запустите:

sudo m4 version

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

0

Это заняло у меня много времени, но вот как я это решил:

  • Бежать:

    which autom4te
    
  • дает вам путь autom4te . В моем случае это было: /Applications/MAMP/Library/bin/autom4te

  • Идите по этому пути и посмотрите, есть ли программа m4

  • Если это так, это может быть повреждено. Так что переименуйте это:

    mv m4 m4_old
    
  • Теперь проверьте, где находится ваша новая версия m4. Итак, бегите:

     which m4
    

Это дает вам: /path/to/your/m4

  • Теперь найдите символическую ссылку в папке вашего autom4te на исходный путь m4 , так:

     ln -s /path/to/your/m4
    

Теперь должно работать, работает pecl

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .