web-dev-qa-db-ja.com

OSX Mountain LionでPHPのmcrypt拡張機能をインストールする

N00bの潜在的な質問をおApびします。OSXMountain LionマシンにPHPのmcrypt拡張機能をインストールしようとしています。

ターミナルでの次のステップは、これまでにPHP install

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拡張がロードされたことを示しません。

それからphp.ini内でextension_dirを指定しようとしましたが、再び運がありません。

やった

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として試してみましたが、うまくいきませんでした。

私も多くのグーグルの後、以下を試しました

./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt

これはうまくいくように見えますが、「メイク」すると、戻ります

ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory

繰り返しますが、成功しません。

私は何を間違えていますか? mcrypt.soの物理的なコンパイルは行われていないようですが、locateの下に別のmcrypt.soが見つかると思われるので、間違ってコンパイルしていますか?

誰でも助けてください? Google検索のページを1つずつ調べてみましたが、運がありません!

39
user2023687

私はMacでHomebrewを使う傾向があります。すべてのものをインストールして構成します。
http://mxcl.github.com/homebrew/

そうすれば、brew install mcrypt php53-mcryptでインストールでき、Just Work(tm)になります。

53は、php56-mcryptphp70-mcryptなど、使用しているPHP)のバージョンに置き換えることができます。不明な場合は、 brew search php

また、内蔵Macを使用している場合は、PHPが/usr/binにインストールされているので、端末でwhich phpで使用しているphpを確認できます。 llはパスを返します。

77
David Yell

私はこれをマウンテンライオンで行ったところです。 Homebrewはlibiconvをブロックしました。libiconvは行方不明だと思っていましたが、実際には最新でした。 libiconvを認識させるために1時間試行した後、私はそれをあきらめて古い方法でインストールしました。

(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

完了-醸造は必要ありません。 HTH誰か。

50
ckm

mcryptまたはportを使用せずにphp -brewをインストールする

注:これらの指示は徹底的であるため、長いです。このプロセスは実際にはかなり簡単です。あなたが楽観主義者であれば、mcrypt extensionの構築セクションまでスキップできますが、私が言ったエラーをよく見るでしょう。最初にautoconfおよびlibmcryptをインストールします。

OSX 10.9の新規インストールでこれを行ったところです。私のために働いた解決策は、veryに近いckm-私は彼らのステップを含めています完全を期すために、私自身も完全に。私の主な目標(「mcrypt」を持つ以外)は、システム全体への影響が最も少ない方法でインストールを実行することでした。それは物事を手動で行うことを意味します(portbrewなし)

手動で物事を行うには、最初にPHPモジュールをビルドするための依存関係、およびmcryptのための別の依存関係が必要です。これらはautoconflibmcrypt、どちらかを既に持っているかもしれませんが、どちらもOSX 10.9の新規インストールでは持っていません。

autoconf

Autoconf(より良い説明がないため)を使用して、まったく異なるが、まだ非常に異なるシステムに物事をコンパイルする方法を伝えます。たとえば、ファイルシステムの階層が異なるなど、OSXで使用するのと同じ基本コマンドセットを使用してLinuxでモジュールを構築できます。私は StackOverflowでAresが説明した方法 =、完全を期すためにここで複製します。これは非常に簡単です。

$ 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このライブラリへのインターフェイスの提供です)。私が使用した方法は、説明されているものに基づいていました here ですが、できる限り単純化することを試みました:

最初に、 SourceForge から入手可能なlibmcryptソースをダウンロードします。これは、このドキュメントの執筆時点で、具体的には次の場所から入手できます。

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について通知する必要があります。

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に依存している場合、Webの変更に気付く前に再起動する必要があります。

$ Sudo apachectl restart

これで完了です。

38
Will Palmer

このエラーが発生する理由

mcrypt.soのようなファイルの1つがextension="mcrypt.so"構文を使用してインクルードされているが、ファイルがextension_dirパスにない場合(<?php phpinfo(); ?>またはphp -iを使用する場合)それを確認します)。

また、どのphp.ini構成ファイルがロードされているかがわかりますので、設定がどこから来ているかがわかります。自作バージョンを使用している場合、ほとんどの場合、/usr/local/etc/php/5.4/php.iniのようなものになります。

「追加の.iniファイルがないか、このディレクトリをスキャンしてください」などと言っている部分に注意してください。つまり、メイン構成の後にロードされるtweaks.iniなど、独自のファイルを置く場所を提供しますファイルを作成して、変更を加えて簡単に更新できるようにします。また、このディレクトリ内のすべてのファイルがアルファベット順にロードされることを忘れないでください。したがって、mcryptディレクティブを含むadjustments.iniというファイルがあり、mcrypt.iniがある場合、ほとんどの場合は設定オーバーライドされます。

extension="mcrypt.so"を指定する代わりに、mcrypt.soファイルへのフルパスを指定することもできます。他のオプションは、extension_dir設定を編集することです。

私のために働いたもの

マーベリックスでは、どちらもする必要はありませんでした。 homebrewの新規インストールを行った後、次を使用してjosegonzalezタップを追加しました。

brew tap josegonzalez/homebrew-php

(私の別のラップトップはMountain Lionを実行しており、このセットアップでもhomebrewを使用していました。)

その素晴らしいリポジトリをタップした後、phpmcryptを使用してインストールできます何かのようなもの:

brew install php54 php54-mcrypt

これが機能しない場合はどうすればいいですか(そして、どうしてhomebrewを使用する必要があるのですか?)

ソースからダウンロードしてビルドする前に、このルートを試すことを強くお勧めします。ソースからビルドするのは難しくありませんが、それを維持する必要はありません。そもそもhomebrewを使用する理由の1つです。これは(巨大なコミュニティを持つ)パッケージマネージャーです。

homebrewプロジェクトには多くの開発があります-もし問題があれば、 issues page をチェックすることをお勧めします

ですから、はい、ソースからビルドすることができます。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ファイルの場所を見つけて、不一致があるかどうかを確認します(または完全なパスを指定します)。
10
cwd

私にとって、ヨセミテで

$ brew install mcrypt php56-mcrypt

コンピューターを再起動

トリックをしました。

8
Sinan Eldem

Brewを使用したソリューションは、次の後にのみ機能しました:php.iniで

nano /private/etc/php.ini

次の行を追加します。

extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"

警告!正しいPHPバージョンを設定します。

5
Turtletrail

オプションがある場合は、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

...

4
sinewave

OS Xを可能な限りクリーンに保ちたい人のもう1つの可能性は、vagrant [1]を使用してphp開発環境を定義することです。 VagrantはVirtualBox [2]をヘッドレスモード(13インチMid 2009 MacBook ProのCPUの約3%)で使用して、ウェブサーバーとphpなどで仮想マシンを実行できます。

Vagrant環境を簡単に作成するには、この素晴らしいツールを使用できます https://puphpet.com/

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

自作なしでPHP 5.3のmcryptモジュールをインストールするシェルスクリプトを作成します。

スクリプトは必要に応じてphp autoconfをインストールし、phpバージョンのモジュールをコンパイルします。

リンクはこちら: https://Gist.github.com/lucasgameiro/8730619

ありがとう

何も機能せず、最終的にリソース@ HereHere を使用して機能するようになりました。 OSX Mavericks(10.9)では、PHP 5.4.17またはStable PHP 5.4.22ソースを使用してmcryptをコンパイルする必要があります。 Phpソース5.4 .22ここ

1
star18bit

ブリューベースソリューションは私のために働いた

  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ファイル拡張子セクションに追加します-マシンのインストール場所で拡張子パスを確認してください

    extension = "/ usr/local/Cellar/php54-mcrypt/5.3.26/mcrypt.so"

  4. Apacheサーバーを再起動します

    $ Apacheの再起動

1
sushilprj

これは私がやったことです:

$ 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
1

mycrypt.oおよびmcrypt_filter.oは、phpダウンロードしたディレクトリのext/.libsにあります。ファイルをext/mcryptにコピーしてから、make && make installを再度実行してください。

0
Tim Nong

Brewの最近の変更(homebrew/phpの廃止)により、mcryptでphpを次のようにインストールします。

brew install [email protected] -with-mcrypt=mcrypt

PHPの以前のインストールをアンインストールする必要がある場合があります

0
james.c.funk

brew install mcrypt phpを実行した後、pecl経由でphp-mcryptをインストールする必要がありました。

pecl install mcrypt-1.0.1

執筆時点では、mcryptには安定したpeclリリースがありません。1.0.1はphp 7.2および7.3の現在のリリースであり、brew install phpはphp 7.2をインストールします。

0
curiosity26