Installing mcrypt on php7.2: Difference between revisions

From Freephile Wiki
No edit summary
m Text replacement - "<(\/?)source" to "<$1syntaxhighlight"
Tags: Mobile edit Mobile web edit
 
Line 1: Line 1:
So, you're running PHP7.2 but [https://liorkaplan.wordpress.com/2017/09/10/php-7-2-is-coming-mcrypt-extension-isnt/ can't install php7.2-mcrypt like you used to]?
So, you're running PHP7.2 but [https://liorkaplan.wordpress.com/2017/09/10/php-7-2-is-coming-mcrypt-extension-isnt/ can't install php7.2-mcrypt like you used to]?


<source lang="bash">
<syntaxhighlight lang="bash">
# install dependencies
# install dependencies
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
Line 8: Line 8:
# use PECL to install mcrypt
# use PECL to install mcrypt
sudo pecl install mcrypt-1.0.1
sudo pecl install mcrypt-1.0.1
</source>
</syntaxhighlight>


Since PECL is ancient now, it doesn't actually enable the extension once it's built (unless you have PECL configured so that it knows where your php.ini file is).  You'll know that you need to do more if PECL tells you:
Since PECL is ancient now, it doesn't actually enable the extension once it's built (unless you have PECL configured so that it knows where your php.ini file is).  You'll know that you need to do more if PECL tells you:
Line 18: Line 18:
</blockquote>
</blockquote>


Or, simply ask php: <source lang="bash">php  -m</source>  If there is no 'mcrypt' in the output, PHP doesn't know that it's installed.   
Or, simply ask php: <syntaxhighlight lang="bash">php  -m</syntaxhighlight>  If there is no 'mcrypt' in the output, PHP doesn't know that it's installed.   


Although you can add the required line into php.ini; on Ubuntu/Debian you will find module-specific <tt>*.ini</tt> files in <tt>/etc/php/7.2/mods-available/</tt>  Just copy one to 'mcrypt.ini', and change the contents so that it contains
Although you can add the required line into php.ini; on Ubuntu/Debian you will find module-specific <tt>*.ini</tt> files in <tt>/etc/php/7.2/mods-available/</tt>  Just copy one to 'mcrypt.ini', and change the contents so that it contains
Line 27: Line 27:


Once that's done, tell PHP about it:
Once that's done, tell PHP about it:
<source lang="bash">
<syntaxhighlight lang="bash">
sudo phpenmod mcrypt
sudo phpenmod mcrypt
# confirm with  
# confirm with  
php -m | grep mcrypt
php -m | grep mcrypt
</source>
</syntaxhighlight>


Now, tell Apache to use your new PHP module:
Now, tell Apache to use your new PHP module:
<source lang="bash">
<syntaxhighlight lang="bash">
sudo systemctl reload apache2
sudo systemctl reload apache2
# confirm with  
# confirm with  


php -i | grep mcrypt
php -i | grep mcrypt
</source>
</syntaxhighlight>


[[Category:PHP]]
[[Category:PHP]]
[[Category:Development]]
[[Category:Development]]
[[Category:DevOps]]
[[Category:DevOps]]

Latest revision as of 13:25, 24 February 2025

So, you're running PHP7.2 but can't install php7.2-mcrypt like you used to?

# install dependencies
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev
# use PECL to install mcrypt
sudo pecl install mcrypt-1.0.1

Since PECL is ancient now, it doesn't actually enable the extension once it's built (unless you have PECL configured so that it knows where your php.ini file is). You'll know that you need to do more if PECL tells you:

configuration option "php_ini" is not set to php.ini location

You should add "extension=mcrypt.so" to php.ini

Or, simply ask php:

php  -m

If there is no 'mcrypt' in the output, PHP doesn't know that it's installed.

Although you can add the required line into php.ini; on Ubuntu/Debian you will find module-specific *.ini files in /etc/php/7.2/mods-available/ Just copy one to 'mcrypt.ini', and change the contents so that it contains

extension=mcrypt.so

Once that's done, tell PHP about it:

sudo phpenmod mcrypt
# confirm with 
php -m | grep mcrypt

Now, tell Apache to use your new PHP module:

sudo systemctl reload apache2
# confirm with 

php -i | grep mcrypt