Я использую Mac с OS X Mavericks и запускаю скрипты php в MAMP. Некоторые скрипты php, которые я запускаю, требуют использования pthreads .
Может ли кто-нибудь предоставить пошаговые инструкции по установке или включению pthreads на Mac?
Я широко использую Googled и нашел небольшую документацию по этому поводу. Все, что я нашел, это то, что мне может или не придется перекомпилировать php из исходного кода, или, может быть, просто добавить пару флагов в php.ini, или, может быть, я могу просто использовать pecl и т. Д. В терминале я попытался pecl install pthreads
и получить эта ошибка:
Не удается установить, php_dir для канала «pecl.php.net» не может быть записан текущим пользователем
На данный момент я сильно потерял. Я хочу, чтобы избежать переключения на мою машину Windows с помощью WAMP, если это возможно.
Я не пользователь Mac, однако процесс сборки такой же для Mac и unix, поэтому я могу помочь вам в этом.
Чтобы настроить текущую установку:
Не удается установить, php_dir для канала «pecl.php.net» не может быть записан текущим пользователем
Это причина отказа установки установки, возможно, проверьте конфигурацию для php_dir.
Вы можете установить значение параметра с помощью:
pecl config-get php_dir
Я не знаком с MAMP, но, вероятно, это так, что у вас нет сборки Thread Safe для PHP.
Вы можете установить это с помощью:
php -i | grep Thread
Вы должны ожидать:
Безопасность потока => включена
Если у вас включена защита Thread, это должно быть так, что исправление разрешений на php_dir исправит вашу проблему.
Если вы этого не сделаете, вам придется перестроить или установить из другого источника потокобезопасную сборку PHP.
Последний вариант заключается в том, чтобы построить себя, так как это означает, что вы пропустите обновления, предоставленные выше по течению, хотя я недостаточно осведомлен, чтобы точно знать, есть ли хорошо поддерживаемая потоковая безопасная сборка, я буду предполагать, что это так.
Чтобы создать себя, вам нужно будет перезаписать вашу текущую установку на новую, загрузить исходники в PHP для желаемой версии (рекомендуется 5.5 +, последняя стабильная, все время лучше).
Вы хотите узнать, какие расширения включены для вашей текущей сборки, и решить, что вы хотите включить в своей новой сборке.
Чтобы выяснить, какие расширения включены:
php -m
Запишите это:
php -m> enabled-extensions
Чтобы настроить сборку для использования в потоке, используйте следующую опцию configure:
–enable-Сопровождающий ЗТС
Вы хотите установить префикс новой установки в соответствии со старым:
prefix = / старый / префикс
Если ваш текущий двоичный файл php находится в / usr / local / bin / php, префикс будет / usr / local. Если ваш текущий двоичный файл php находится в / usr / bin / php, то префикс будет / usr.
Вы также захотите сопоставить свой текущий каталог конфигурации сборки и сканировать настройки каталога:
–with-конфиг-файл-путь = / старый / конфиг / путь
Если ваш текущий php.ini находится в /usr/lib/php.ini, тогда путь будет / usr / lib. Если ваш текущий php.ini находится в /etc/php.ini, тогда путь будет / etc
Например, если вы используете каталоги сканирования при запуске, у вас есть каталог /etc/php.d
–with-конфигурационный файл-сканирование-DIR = / и т.д. / php.d
Если вашей текущей папкой сканирования является /etc/php.d, то в каталоге находится /etc/php.d
Чтобы настроить расширения, ссылаясь на список, который вы сделали в начале, используйте команду:
./configure –help
Чтобы выяснить, переключатели позволяют использовать выбранные расширения. Если в списке есть расширения, вы можете установить их после завершения сборки командой pecl.
В общем:
--enable-extname
: никаких зависимостей от внешних библиотек --with-extname
: зависит от внешних библиотек После configure
нам нужно запустить make
, если у вас несколько процессоров или ядер, вы можете использовать несколько заданий:
make -j8
Позволит запускать параллельно (максимум 8 заданий), это значительно ускоряет сборку. Используйте столько рабочих мест, сколько у вас есть.
Во время make
, если произойдет сбой, будет очевидно, к чему относится отказ, если вы можете определить имя библиотеки (обычно полезно имя расширения, которое вызывает отказ), тогда вы обычно можете разрешить ошибку, установив пакет разработки для библиотеки, который вызвал сбой.
Пакет разработки содержит заголовки и / или статические библиотеки, обычно это тот случай, когда сторонники пакетов опускают этот материал из обычных пакетов для экономии веса, поэтому вы можете установить пакет libxml2, но не иметь заголовки.
Когда make
завершен, вы будете готовы к установке, убедитесь, что у вас есть разрешения для префикса и выполните
сделать установку
Теперь вы должны иметь возможность устанавливать расширения PECL, которые вам нужны, с
pecl install extname
Теперь вы можете установить PECL или github:
pecl install pthreads