Подтвердить что ты не робот

Установка расширения 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 без везения!

4b9b3361

Ответ 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