Mac下PHP環境構成処理セット

2978 ワード

Mac自動ApacheとPHPでApacheを起動した後、起動して構成したアドレスに以下のエラーが発生しました.
Fatal error: Call to undefined function Util\mcrypt_decrypt() in Util/Mcrypt.class.php on line 61

mcryptソフトウェアを実行できるようにPHP拡張モジュールをインストールphp.ini構成.
まずwhich phpは本機のPHPのインストールの経路を見ます
/usr/bin/php

php-v PHPバージョンの表示
PHP 5.6.30 (cli) (built: Feb  7 2017 16:18:37) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

ダウンロードにはパッケージが必要です
1、phpをダウンロードする(対応バージョンPHP 5.6.30のPHPソースファイルをダウンロードする)http://php.net/releases/
2、libmcryptをダウンロードする(mcryptをインストールするにはこのパッケージが必要)http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
3、mhashをダウンロードする(mcryptをインストールするにはこのパッケージが必要)https://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/
4、mcryptのダウンロードhttps://sourceforge.net/projects/mcrypt/files/Libmcrypt/
(macではmakeでエラーが発生することがあります:rfc 2440.c:26:20:error:malloc.h:No such file or directory、rfc 2440.c:#includeを#includeに変更し、make/make installを再インストールすればいい)
ソフトウェアのインストール
1.Libmcryptをインストールする
   #tar -zxvf libmcrypt-2.5.8.tar.gz
   #cd libmcrypt-2.5.8
   #./configure
   #make
   #make install
     :libmcript     /usr/local 

2.mhashのインストール
   #tar -zxvf mhash-0.9.9.9.tar.gz
   #cd mhash-0.9.9.9
   #./configure
   #make
   #make install (  :       ,    sudo make install)

3.mcryptのインストール
   #tar -zxvf mcrypt-2.6.8.tar.gz
   #cd mcrypt-2.6.8
   #LD_LIBRARY_PATH=/usr/local/lib/ ./configure -with-libmcrypt-prefix=/usr/local
   #make
   #make install
    :(mac     make    :rfc2440.c:26:20: 
  error: malloc.h: No such file or directory,
     rfc2440.c:#include  #include , 
    make/make install  )

4.PHPを用いる必要な暗号化ライブラリをコンパイルしてmcyptを生成する.soファイルはPHPソースファイル(システムのphpのバージョン番号と一致するに違いない)を解凍します.Mac OS X 10.12にプリインストールされているPHPバージョンは5.6.30なので、このバージョンをダウンロードする必要があります.
端末で次のコマンドを実行します.
#tar zxvf php-5.3.4.tar.gz
#cd php-5.3.4/ext/mcrypt
#phpize(  ./configure        autoconf.tar.gz   
 autoconf        ./configure 
  make && make install 
  autoconf    php      ./configure  php )
#./configure
#make

次にコンパイルしたsoファイルを対応するパスにコピーします
sudo cp modules/mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20130626/
(no-debug-non-zts-20130626          ,        )

上記のコマンドを実行すると、10.12にエラーが発生します.
Operation not permitted

解决方法:参考アドレスは简単に言えばEl CapitanがRootlessメカニズムに参加し、好きなように多くのパスを読むことができなくなった.root権限を設定してもだめです.
ここまで振り回すと、PHP暗号化を配置してphpを開くことができる.ini
sudo vi /etc/php.ini

USr/etc/php.iniは、次のコードを追加して保存して終了し、Apacheを再起動します(php.ini.defaultがコピーされていない場合は、書き込み権限を変更する場合があります:chmod 777 php.ini)
extension=/usr/lib/php/extensions/no-debug-non-zts-20130626/mcrypt.so

これで終わりです.