Извиняюсь заранее за возможные вопросы 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 без везения!
Я обычно использую Homebrew на Mac. Он будет устанавливать и настраивать все для вас.
http://mxcl.github.com/homebrew/
Затем вы сможете установить его с помощью brew install mcrypt php53-mcrypt
и это будет Just Work ™.
Вы можете заменить 53
любой версией PHP, которую вы используете, например php56-mcrypt
или php70-mcrypt
. Если вы не уверены, используйте brew search php
.
Помните также, что если вы используете встроенный Mac PHP, он установлен в /usr/bin
вы можете увидеть, какой php вы используете, с which php
на терминале и он вернет путь.
Я только что прошел через Горный Лев. 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 теперь находится в вашем файле ext extr ( /usr/lib/php/extensions/no-debug-non-zts-20090626/
в моем случае), теперь вам нужно добавить php.ini в качестве модуля
$ vi /etc/php.ini $ (insert) extension=mcrypt.so $ sudo apachectl restart
Готово – не нужно варить. HTH кто-то.
mcrypt
без использования port
или brew
Примечание: эти инструкции являются длинными, потому что они намереваются быть тщательными. Процесс на самом деле довольно прямолинейный. Если вы оптимист, вы можете перейти к зданию секции расширения mcrypt , но вы можете очень хорошо увидеть ошибки, которые я сделал, сказав мне сначала установить
autoconf
иlibmcrypt
.
Я только что прошел через новую установку OSX 10.9. Решение, которое сработало для меня, было очень близко к решению ckm – я включаю их шаги, а также свои собственные в полном объеме, для полноты. Моя главная цель (кроме «иметь mcrypt
») заключалась в том, чтобы выполнить установку таким образом, который оставил наименьшее влияние на систему в целом. Это означает, что делать вещи вручную (без port
, без brew
)
Чтобы сделать что-то вручную, вам сначала понадобится пара зависимостей: одна для создания PHP-модулей и другая для mcrypt
. Это autoconf
и libmcrypt
, любой из которых у вас уже есть, но ни один из них не будет установлен при новой установке OSX 10.9.
Autoconf (из-за отсутствия лучшего описания) используется для того, чтобы сказать не совсем разрозненные, но все же очень разные системы, как компилировать вещи. Он позволяет использовать один и тот же набор базовых команд для сборки модулей в Linux, как, например, на OSX, несмотря на их различные иерархии файловых систем и т. Д. Я использовал метод, описанный Ares в StackOverflow , который я воспроизведу здесь для полноты. Это очень прямолинейно:
$ 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
, используемый для предоставления кишок расширения 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
Единственный способ узнать, что это сработало, – это mcrypt
шаг ./configure
для самого расширения 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.
Вашему файлу php.ini
нужно будет загрузить mcrypt
. По умолчанию в OSX 10.9 на самом деле имеется mcrypt
информация о конфигурации mcrypt
, но на самом деле она не активирует mcrypt
если вы не сообщите об этом.
Файл php.ini
по умолчанию не существует. Вместо этого файл /private/etc/php.ini.default
отображает конфигурацию по умолчанию и может использоваться как хороший шаблон для создания «истинного» 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 зависит от httpd
Apache, вам нужно будет перезапустить его, прежде чем вы заметите изменения в Интернете. Вы можете сделать это через:
$ sudo apachectl restart
И вы сделали.
PHP жалуется, что один из файлов, таких как mcrypt.so
, включен с использованием extension="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
homebrew
для установки mcrypt
если это вообще возможно extension_dir
и mcrypt.so
, где mcrypt.so
файл mcrypt.so
и посмотрите, есть ли несоответствие (или укажите полный путь) Для меня, на Йосемити
$ brew install mcrypt php56-mcrypt
Перезапустить компьютер
сделал трюк.
Решение с варкой работало только после следующего: в php.ini
nano /private/etc/php.ini
добавьте эту строку:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
Предупреждение! Установите правильную версию PHP.
Я бы рекомендовал установить все через доморощенный, если у вас есть опция. Я немного побывал в кругах, но установил php 5.x через варево, а затем необходимые модули работали. Я работал с php 5.4 и использовал это для начала:
https://github.com/josegonzalez/homebrew-php
а затем установили дополнительные модули с:
brew install php54-redis brew install php54-xdebug brew install php54-mcrypt
…
Другая возможность для тех, кто хочет сохранить OS X как можно более чистым, – использовать бродягу [1] для определения среды разработки php. Vagrant может использовать VirtualBox [2] в режиме безглавых (~ 3% от процессора на моем 13-дюймовом, Mid MacBook Pro) для запуска виртуальной машины с веб-сервером и php и всеми.
Чтобы легко создать бродячую среду, вы можете использовать этот отличный инструмент https://puphpet.com/
Я бы создал сценарий оболочки для установки модуля mcrypt для PHP 5.3 без доморощенного.
Скрипты устанавливают php autoconf, если необходимо, и компилируют модуль для вашей версии php.
Ссылка находится здесь: https://gist.github.com/lucasgameiro/8730619
благодаря
Ничто не работало и, наконец, работало с использованием ресурса @ здесь и здесь ; Просто помните, что OSX Mavericks (10.9) должен использовать PHP 5.4.17 или Stable PHP 5.4.22 источник для компиляции mcrypt. Источник Php 5.4.22 здесь
Для меня важен базовый раствор
Установите эти пакеты
$ brew install brew install 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
Это то, что я сделал:
$ 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
mycrypt.o и mcrypt_filter.o находятся в каталоге ext / .lib вашего загруженного вами каталога php. Просто скопируйте файлы в ext / mcrypt, а затем запустите make && make install снова.
sudo apt-get install php5-mcrypt
ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/fpm/conf.d/mcrypt.ini
перезапуск службы php5-fpm
перезагрузка службы nginx