web-dev-qa-db-ja.com

php7.2-mcryptのインストールに関する問題

PHP 7.2.Xバージョンからmcrypt拡張モジュールをロードしようとしています。
だから、インストールしてこのリンクをたどるために、PHPの現在のバージョンと互換性のあるPECLライブラリを利用しようとしました。 PHP 7.2にmcryptをインストールしています =インストール中!

以下は、端末で特定のコマンドを実行した後に得られた結果です。

root@YYY:/var/www/html/orocrm# apt install php-pear
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'Sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  php-pear
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 285 kB of archives.
After this operation, 2,107 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main AMD64 php-pear all 1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1 [285 kB]
Fetched 285 kB in 1s (230 kB/s)   
Selecting previously unselected package php-pear.
(Reading database ... 215503 files and directories currently installed.)
Preparing to unpack .../php-pear_1%3a1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1_all.deb ...
Unpacking php-pear (1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up php-pear (1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1) ...

YYY@YYY:/var/www/html/orocrm$ Sudo apt-get -y install gcc make autoconf libc-dev pkg-config
[Sudo] password for YYY: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libc6-dev' instead of 'libc-dev'
gcc is already the newest version (4:5.3.1-1ubuntu1).
make is already the newest version (4.1-6).
pkg-config is already the newest version (0.29.1-0ubuntu1).
libc6-dev is already the newest version (2.23-0ubuntu9).
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'Sudo apt autoremove' to remove it.
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc libtool
The following NEW packages will be installed:
  autoconf automake autotools-dev libsigsegv2 m4
0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded.
Need to get 1,079 kB of archives.
After this operation, 3,998 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main AMD64 libsigsegv2 AMD64 2.10-4 [14.1 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu xenial/main AMD64 m4 AMD64 1.4.17-5 [195 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu xenial/main AMD64 autoconf all 2.69-9 [321 kB]
Get:4 http://in.archive.ubuntu.com/ubuntu xenial/main AMD64 autotools-dev all 20150820.1 [39.8 kB]
Get:5 http://in.archive.ubuntu.com/ubuntu xenial/main AMD64 automake all 1:1.15-4ubuntu1 [510 kB]
Fetched 1,079 kB in 2s (447 kB/s) 
Selecting previously unselected package libsigsegv2:AMD64.
(Reading database ... 215198 files and directories currently installed.)
Preparing to unpack .../libsigsegv2_2.10-4_AMD64.deb ...
Unpacking libsigsegv2:AMD64 (2.10-4) ...
Selecting previously unselected package m4.
Preparing to unpack .../archives/m4_1.4.17-5_AMD64.deb ...
Unpacking m4 (1.4.17-5) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../autoconf_2.69-9_all.deb ...
Unpacking autoconf (2.69-9) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../autotools-dev_20150820.1_all.deb ...
Unpacking autotools-dev (20150820.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../automake_1%3a1.15-4ubuntu1_all.deb ...
Unpacking automake (1:1.15-4ubuntu1) ...
Processing triggers for install-info (6.1.0.dfsg.1-5) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Setting up libsigsegv2:AMD64 (2.10-4) ...
Setting up m4 (1.4.17-5) ...
Setting up autoconf (2.69-9) ...
Setting up autotools-dev (20150820.1) ...
Setting up automake (1:1.15-4ubuntu1) ...
update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode
Processing triggers for libc-bin (2.23-0ubuntu9) ...

YYY@YYY:/var/www/html/orocrm$ Sudo apt-get -y install libmcrypt-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'Sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  libmcrypt-dev
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 83.7 kB of archives.
After this operation, 438 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/universe AMD64 libmcrypt-dev AMD64 2.5.8-3.3 [83.7 kB]
Fetched 83.7 kB in 0s (105 kB/s)       
Selecting previously unselected package libmcrypt-dev.
(Reading database ... 215484 files and directories currently installed.)
Preparing to unpack .../libmcrypt-dev_2.5.8-3.3_AMD64.deb ...
Unpacking libmcrypt-dev (2.5.8-3.3) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up libmcrypt-dev (2.5.8-3.3) ...

YYY@YYY:/var/www/html/orocrm$ Sudo pecl7.2-sp install --nodeps mcrypt-snapshot
Sudo: pecl7.2-sp: command not found

pecl7.2-sp:コマンドが見つかりません

ドキュメントのセクションから、廃止予定であり、セキュリティの観点からは利用できなくなることが明確に述べられていました。それ以降、PHP 7.2.X以降のリリースバージョンから。

ただし、必要に応じて必要な機能を実行するために、プロジェクトの一部にはこれらの依存関係が必要です。上記の問題を解決するにはどうすればよいですか?


更新:

TL; DR:

投稿された回答に対する投票から多くの回答がありました。 OSアーキテクチャレベルに応じて、回答をトリアージする必要があります。ホスティングに共有サーバーを使用しているため、その上に複数のプロジェクトがあり、それらはPHP 5.XXのバージョンでコーディングされているため、PHP 7.1にダウングレードすることにしました。 DebianベースのOSでデフォルトでmcrypt拡張をサポートするX。

PHP 7.2へのmcrypt拡張機能のインストール 、Server Pilotコミュニティによるリンクで既に述べたように。これらの人々は、mcryptをPHP-7.2にインストールするためにpecl-7.2の新しいバージョンが利用可能であると言っていました。残念ながら、実行されたコマンドのpecl7.2-sp: command not foundで終了しました。後でウェブサイトのページが更新されたため、そこにあるコマンドは実行中に試行されたコマンドと一致しません。

最後に、OSアーキテクチャレベルに合ったソリューションはどれでもかまいません。

または

以下のアプローチで根本原因を解決できなかった場合
あるいは、デフォルトでmcrypt拡張をサポートするPHP 7.1.Xバージョンに進むことができます

31
Nishanth ॐ

以下の手順に従って、PECLを使用してPHP7.2に mcrypt をインストールしました。

  1. PECLをインストールする

apt-get php-peclのインストール

  1. MCRYPTをインストールする前に、libmcryptをインストールする必要があります

apt-get install libmcrypt-dev libreadline-dev

  1. PECLを使用してMCRYPT 1.0.1をインストールします

pecl install mcrypt-1.0.1

  1. インストールが成功した後

extension = mcrypt.so」をphp.iniに追加する必要があります

サポートが必要な場合は、以下にコメントしてください。 :-)

40

Mcrypt PECL拡張

 Sudo apt-get -y install gcc make autoconf libc-dev pkg-config
 Sudo apt-get -y install libmcrypt-dev
 Sudo pecl install mcrypt-1.0.1

プロンプトが表示されたら

 libmcrypt prefix? [autodetect] :

[Enter]を押して自動検出します。

Mcrypt trought peclのインストールに成功したら、php.iniにmcrypt.so拡張を追加する必要があります。

出力は次のようになります。

...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'    ---->   this is our path to mcrypt extension lib
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

インストールパスを取得し、cliおよびApache2のphp.ini構成に追加します。

Sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
Sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/Apache2/conf.d/mcrypt.ini"

拡張機能がインストールされたことを確認します

コマンドを実行:

php -i | grep "mcrypt"

出力は次のようになります。

/etc/php/7.2/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
35

@ praneeth-nidarshanは、一部を除くほとんどすべての手順をカバーしています:

  • Pearがインストールされている(またはインストールされている)かどうかを確認します。

$ Sudo apt-get install php-pear

  • エラーを回避するために、まだインストールされていない場合はphp7.2-devをインストールします。

sh:phpize:見つかりません

エラー:「phpize」が失敗しました

$ Sudo apt-get install php7.2-dev

  • Peclを使用してmcryptをインストールします。

$ Sudo pecl install mcrypt-1.0.1

  • 拡張extension=mcrypt.soをphp.ini構成ファイルに追加します。どこにあるかわからない場合は、次で検索してください:

$ Sudo php -i | grep 'Configuration File'

21
SimionZ
Sudo apt-get install php-pear php7.x-dev

xは7.2のようなphp7.2-devのphpバージョンです

apt-get install libmcrypt-dev libreadline-dev
pecl install mcrypt-1.0.1 

次に、「/-/extension = mcrypt.so」を「/etc/php/7.2/Apache2/php.ini」に追加します

ここで、php.iniはphpのインストールに依存し、Apacheはphpバージョンを使用します。

3
hk'

別の方法として、mcryptの7.1バージョンをインストールして、それへのシンボリックリンクを作成できます。

php7.1-mcryptのインストール:

Sudo apt install php7.1-mcrypt

シンボリックリンクの作成:

Sudo ln -s /etc/php/7.1/mods-available/mcrypt.ini /etc/php/7.2/mods-available

Sudo phpenmod mcryptmcryptを有効にすると、利用可能になります。

1
Vadi