Intereting Posts
Невозможно переместить композитор Cakephp 3.0 alpha2 Как сравнить новый пароль с старыми паролями? Как я мог избежать использования MySQL-запроса в цикле While в PHP Изображение отсутствует и требуется – WordPress AMP Structure не добавляет атрибут изображения Файл загрузки Codeigniter не работает в Интернете, но работает на localhost Как долго длится моя сессия? Как прочитать RS232 Serial Port в PHP, как эта QBasic Program Xero API – Как получить счета между двумя датами Как защитить / закодировать Javascript POST-запросы Yii Ошибка 400 Тонер CSRF не может быть проверен при попытке удалить сообщение Импорт классов и пространств имен в PHP: Какая разница делает лидирующую обратную косую черту? обслуживание различного контента на основе домена в кодеригенере PHP + Comet (длительный опрос) масштабирование / хосты Если вы включите файл в PHP в цикле, он будет обращаться к файлу каждый раз, когда он будет работать в цикле? Передавать функции классу

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

Я обычно использую 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

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

Затем вам понадобится 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

Это наша фактическая цель. Надеюсь, что кратковременное падение в адский ад закончится.

Во-первых, нам нужно будет получить исходный код для расширения 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 , но на самом деле она не активирует 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 

TLDR

  • Вы должны использовать 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/

  1. http://www.vagrantup.com/
  2. https://www.virtualbox.org/

Я бы создал сценарий оболочки для установки модуля 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 здесь

Для меня важен базовый раствор

  1. Установите эти пакеты

    $ brew install brew install mcrypt php54-mcrypt

  2. Скопируйте по умолчанию php.ini.default в php.ini

    $ sudo cp /private/etc/php.ini.default /private/etc/php.ini

  3. Добавьте эту строку в раздел расширения файла php.ini – проверьте путь расширения с указанием места установки на вашем компьютере

    расширение = "/ USR / местные / Подвал / php54-Mcrypt / 5.3.26 / mcrypt.so"

  4. Перезапустите сервер 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