Установка расширения mcrypt для PHP на OSX Mountain Lion
Извините заранее за потенциальные вопросы n00b, я пытаюсь установить расширение mcrypt для PHP на моей машине OSX Mountain Lion.
Следующие шаги в терминале - это то, что я сделал до сих пор, чтобы выполнить установку PHP
cd /path/to/downloaded/php-5.3.21/ext/mcrypt/
/usr/bin/phpize
./configure
cd /path/to/downloaded/php-5.3.21
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs
make
sudo make install
Что, похоже, хорошо работает и прекрасно устанавливает PHP 5.3.21. Затем я сделал
sudo nano /private/etc/php.ini
И включил
extension=mcrypt.so
Наряду с перезапуском Apache, phpinfo() не показывает, что загружается расширение mcrypt.
Затем я попытался указать extension_dir внутри php.ini, опять же без везения.
Я сделал
locate mcrypt.so
/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
/usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so
И попробовал оба каталога как extension_dir, не повезло.
Я также пробовал следующее, после того, как много Googling
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt
Кажется, что он работает нормально, но затем после "make" он возвращает
ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory
Опять же, успеха нет.
Что я делаю неправильно? Кажется, что физическая компиляция mcrypt.so не происходит или компилируется некорректно, так как я подозреваю, что там будет другой mcrypt.so, найденный под locate?
Кто-нибудь, пожалуйста, помогите? Я просмотрел страницы на страницах поисковых запросов Google без везения!
Ответы
Ответ 1
Я использую Homebrew на Mac. Он будет устанавливать и настраивать все для вас.
http://mxcl.github.com/homebrew/
Затем вы сможете установить его с помощью brew install mcrypt php53-mcrypt
, и это будет просто работать (tm).
Вы можете заменить 53
на любую версию PHP, которую вы используете, например php56-mcrypt
или php70-mcrypt
. Если вы не уверены, используйте brew search php
.
Также помните, что если вы используете встроенный Mac PHP, который он установил в /usr/bin
, вы можете увидеть, какой php вы используете с which php
на терминале, и он вернет путь.
Ответ 2
Я только что просмотрел это на Mountain Lion. Homebrew заблокирован на libiconv, который, по его мнению, отсутствовал, но был на самом деле актуальным. По прошествии часа, пытаясь распознать libiconv, я сдался и установил его старомодным способом, который занял все пять минут...
(download your php version)
$ wget http://www.php.net/get/php-5.3.21.tar.gz/from/a/mirror
$ tar -xvzf php-5.3.21.tar.gz
$ cd php-5.3.21/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install
mcrypt.so теперь находится в вашем PHP ext dir (/usr/lib/php/extensions/no-debug-non-zts-20090626/
в моем случае), теперь вам нужно добавить в php.ini в качестве модуля
$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ sudo apachectl restart
Готово - нет brew необходимо. HTH кто-то.
Ответ 3
Установка php- mcrypt
без использования port
или brew
Примечание. Эти инструкции являются долгими, потому что они намереваются быть тщательными. Процесс на самом деле довольно прямолинейный. Если вы оптимист, вы можете перейти к созданию расширения mcryptно вы вполне можете увидеть ошибки, которые я сделал, сказав мне сначала установите autoconf
и libmcrypt
.
Я только что прошел через новую установку OSX 10.9. Решение, которое сработало для меня, было очень близко к решению ckm - я включаю в себя их шаги, а также свои собственные в полном объеме, для полноты. Моя основная цель (кроме <иметь mcrypt
") состояла в том, чтобы выполнить установку таким образом, чтобы это не оказывало наименьшего влияния на систему в целом. Это означает, что делать вещи вручную (нет port
, no brew
)
Чтобы сделать что-то вручную, вам сначала понадобится пара зависимостей: одна для создания модулей PHP, а другая для mcrypt
в частности. Это autoconf
и libmcrypt
, которые вы уже имели, но ни один из которых не будет установлен при новой установке OSX 10.9.
Autoconf
Autoconf (из-за отсутствия лучшего описания) используется, чтобы сказать не совсем разрозненные, но все же очень разные системы, как скомпилировать вещи. Он позволяет использовать один и тот же набор базовых команд для сборки модулей в Linux, как, например, в OSX, несмотря на их различные иерархии файловой системы и т.д. Я использовал fooobar.com/questions/24726/..., который я воспроизведу здесь для полноты. Это очень прямолинейно:
$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
Затем проверьте установку, выполнив:
$ which autoconf
который должен возвращать /usr/local/bin/autoconf
libmcrypt
Далее вам понадобится libmcrypt
, используемый для предоставления кишок расширения mcrypt
(само расширение является предоставлением интерфейса PHP в эту библиотеку). Метод, который я использовал, основывался на описанном ниже здесь, но я попытался упростить все, что мог:
Сначала загрузите источник libmcrypt
, доступный из SourceForge и доступный на момент написания этой статьи, по адресу:
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
Вам нужно перепрыгнуть через стандартные обломоки SourceForge, чтобы получить реальную ссылку для скачивания, но как только вы ее получите, вы можете передать ее примерно так:
$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install
Единственный способ проверить, что это сработало, - это шаг ./configure
для самого расширения mcrypt
(ниже)
создание расширения mcrypt
Это наша фактическая цель. Надеюсь, что кратковременное пребывание в адском иконе уже закончилось.
Сначала нам нужно получить исходный код для расширения mcrypt
. Это наиболее легко доступно в рамках исходного кода для всего PHP. Итак: определите, какую версию исходного кода PHP вам нужно.
$ php --version # to get your PHP version
теперь, если вам повезет, ваша текущая версия будет доступна для загрузки из главных зеркал. Если это так, вы можете ввести что-то вроде:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.4.17.tar.bz2 http://www.php.net/get/php-5.4.17.tar.bz2/from/a/mirror
К сожалению, моя текущая версия (5.4.17, в данном случае) недоступна, поэтому мне нужно было использовать альтернативные/исторические ссылки на http://downloads.php.net/stas/ (также официальный сайт загрузки PHP). Для этого вы можете использовать что-то вроде:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2
Опять же, исходя из вашей текущей версии.
Как только у вас есть это (и все зависимости, сверху), вы можете перейти к основному процессу фактического создания/установки модуля.
$ cd ~/mcrypt/php
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install
В теории mcrypt.so
теперь находится в вашем каталоге расширения PHP. Затем нам нужно сообщить об этом PHP.
настройка расширения mcrypt
Вашему файлу php.ini
необходимо загрузить загрузку mcrypt
. По умолчанию в OSX 10.9 на самом деле имеется mcrypt
-специальная информация о конфигурации, но на самом деле она не активирует mcrypt
, если вы не сообщите об этом.
Файл php.ini
по умолчанию не существует. Вместо этого файл /private/etc/php.ini.default
отображает конфигурацию по умолчанию и может использоваться как хороший шаблон для создания "true" php.ini
, если он еще не существует.
Чтобы определить, существует ли php.ini
, запустите:
$ ls /private/etc/php.ini
Если результат есть, он уже существует, и вы должны пропустить следующую команду.
Чтобы создать файл php.ini
, запустите:
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
Затем вам нужно добавить строку:
extension=mcrypt.so
Где-то в файле. Я бы рекомендовал выполнить поиск файла для ;extension=
и добавить его непосредственно перед первым вхождением.
Как только это будет сделано, установка и настройка будут завершены. Вы можете убедиться, что это сработало при запуске:
php -m | grep mcrypt
Который должен выводить "mcrypt
", и ничего больше.
Если ваше использование PHP зависит от Apache httpd
, вам нужно будет перезапустить его, прежде чем вы заметите изменения в Интернете. Вы можете сделать это через:
$ sudo apachectl restart
И все готово.
Ответ 4
Почему вы получаете эту ошибку
PHP жалуется, если один из файлов типа mcrypt.so
включен с использованием синтаксиса extension="mcrypt.so"
, но файл не находится в пути extension_dir
(используйте <?php phpinfo(); ?>
или php -i
, чтобы проверить это).
Он также скажет вам, какой файл конфигурации php.ini
загружается, чтобы вы знали, откуда идут настройки. Скорее всего, это будет что-то вроде /usr/local/etc/php/5.4/php.ini
, если вы используете версию доморощенного.
Обратите внимание на часть под ней, которая говорит что-то вроде "Сканировать этот каталог для дополнительных файлов .ini", потому что это означает, что он дает вам место для размещения вашего собственного файла, например tweaks.ini
, который загружается после основного файл конфигурации, чтобы вы могли легко вносить изменения и не отставать от них. Также помните, что все файлы в этом каталоге загружаются в алфавитном порядке, поэтому, если у вас есть один под названием adjustments.ini
, который содержит директивы mcrypt
, и есть mcrypt.ini
, скорее всего ваши настройки будут переопределены.
Один из вариантов указания extension="mcrypt.so"
- указать полный путь к файлу mcrypt.so
. Другой вариант - отредактировать параметр extension_dir
.
Что сработало для меня
На Маверикс мне тоже не нужно было этого делать. Я сделал новую установку homebrew
, а затем добавил josegonzalez tap, используя:
brew tap josegonzalez/homebrew-php
(Мой другой ноутбук бежал Mountain Lion, а также использовал доморощенный в этой настройке.)
После того, как вы нажали этот удивительный репо, вы можете установить php
и mcrypt
, используя что-то вроде:
brew install php54 php54-mcrypt
Что делать, если это не работает (и почему я должен использовать доморощенный в любом случае?)
Я бы очень посоветовал попробовать этот маршрут перед загрузкой и созданием его из источника. Его нетрудно построить из источника, но я не хочу этого поддерживать. Это одна из причин использования homebrew
в первую очередь - это менеджер пакетов (с огромным сообществом).
В проекте homebrew
есть много разработок, и если у вас есть проблемы, я предлагаю проверить их страницу
Итак, да, вы можете построить его из источника, и это может показаться хорошим вариантом прямо сейчас, если вы просто хотите, чтобы mcrypt работал, но вы можете ненавидеть себя за это позже...
Если вы не хотите использовать php54
, существует также ветвь php53
. У них есть некоторые инструкции в репо о том, как использовать оба из них/переключаться между ними.
Если вы новичок в homebrew, вы должны знать, что вы проверяете, что еще доступно, используя brew search php54
, который дает что-то вроде:
php54 php54-lzf php54-snappy
php54-amqp php54-mailparse php54-solr
php54-apc php54-mcrypt php54-ssh2
php54-apcu php54-memcache php54-stats
php54-boxwood php54-memcached php54-svm
php54-chdb php54-midgard2 php54-tidy
php54-couchbase php54-mongo php54-timezonedb
php54-dbase php54-msgpack php54-tokyotyrant
php54-ev php54-mysqlnd_ms php54-twig
php54-gearman php54-oauth php54-uploadprogress
php54-geoip php54-opcache php54-uuid
php54-gmagick php54-parsekit php54-varnish
php54-graphdat php54-pcntl php54-wbxml
php54-http php54-pdflib php54-xcache
php54-igbinary php54-phalcon php54-xdebug
php54-imagick php54-proctitle php54-xhgui
php54-inclued php54-pspell php54-xhp
php54-intl php54-pthreads php54-xhprof
php54-ioncubeloader php54-raphf php54-xmldiff
php54-jsmin php54-redis php54-yac
php54-judy php54-riak php54-yaf
php54-leveldb php54-runkit php54-yaml
php54-libevent php54-scrypt php54-yaz
php54-libvirt
TL;DR
- Вы должны использовать
homebrew
для установки mcrypt
, если это вообще возможно
- Если вы получаете ошибки, вероятно, потому, что ваш файл конфигурации запутался. Проверьте путь
extension_dir
и укажите, где находится файл mcrypt.so
, и посмотрите, есть ли несоответствие (или укажите полный путь).
Ответ 5
Для меня, на Йосемите
$ brew install mcrypt php56-mcrypt
перезагрузить компьютер
сделал трюк.
Ответ 6
Решение с brew работало только после следующего:
в php.ini
nano /private/etc/php.ini
добавить эту строку:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
Внимание! Установите правильную версию PHP.
Ответ 7
Я бы порекомендовал устанавливать все через homebrew, если у вас есть опция. Я немного побывал в кругах, но установил php 5.x через brew, а затем необходимые модули работали. Я работал с php 5.4 и использовал это для начала:
https://github.com/josegonzalez/homebrew-php
а затем установите дополнительные модули с помощью:
brew install php54-redis
brew install php54-xdebug
brew install php54-mcrypt
...
Ответ 8
Еще одна возможность для тех, кто хочет сохранить OS X как можно более чистым, - использовать vagrant [1] для определения среды разработки php. Vagrant может использовать VirtualBox [2] в режиме безглавых (~ 3% от процессора на моем 13-дюймовом, Mid MacBook Pro) для запуска виртуальной машины с веб-сервером и php и всеми.
Чтобы легко создать бродячую среду, вы можете использовать этот отличный инструмент https://puphpet.com/
Ответ 9
Я бы создал оболочку script для установки модуля mcrypt для PHP 5.3 без homebrew.
Скрипты устанавливают php autoconf, если необходимо, и компилируют модуль для вашей версии php.
Ссылка находится здесь: https://gist.github.com/lucasgameiro/8730619
Спасибо
Ответ 10
Ничего не работало и, наконец, работало с помощью ресурса @Здесь и Здесь; Просто помните, что OSX Mavericks (10.9) должен использовать PHP 5.4.17 или Stable PHP 5.4.22 источник для компиляции mcrypt. Php Source 5.4.22 здесь
Ответ 11
Brew для меня работал базовый раствор
-
Установите эти пакеты
$brew установить brew установить mcrypt php54-mcrypt
-
Скопируйте по умолчанию php.ini.default в php.ini
$sudo cp/private/etc/php.ini.default/private/etc/php.ini
-
Добавьте эту строку в раздел расширения файла php.ini - проверьте путь расширения с местом установки на вашем компьютере.
расширение = "/USR/локальные/Подвал/php54-Mcrypt/5.3.26/mcrypt.so"
-
Перезагрузите сервер Apache
$apache restart
Ответ 12
Это то, что я сделал:
$ wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
$ tar xzvf libmcrypt-2.5.8.tar.gz
$ ./configure
$ make
$ sudo make install
$ brew install autoconf
$ wget file:///Users/rmatikolai/Downloads/php-5.4.24.tar.bz2
$ tar xjvf php-5.4.24.tar.bz2
$ cd php-5.4.24/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
$ sudo vi /private/etc/php.ini
Затем вам нужно добавить строку:
extension=mcrypt.so
$ sudo apachectl restart
Ответ 13
mycrypt.o и mcrypt_filter.o находятся в каталоге ext/.lib загруженного вами каталога php. Просто скопируйте файлы в ext/mcrypt, затем запустите make && снова установите установку.
Ответ 14
sudo apt-get install php5-mcrypt
ln -s/etc/php5/mods-available/mcrypt.ini/etc/php5/fpm/conf.d/mcrypt.ini
перезапуск службы php5-fpm
сервис nginx restart