使用未定义常量 MCRYPT_RIJNDAEL_128 - 假设 'MCRYPT_RIJNDAEL_128'
Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128'
我已成功安装 Laravel,但是在 运行 宁 php artisan serve
并转到 localhost:8000
之后,我收到此错误:
Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128'
我在 localhost:8888
上检查了 phpinfo()
,它说 mcrypt
已正确安装。然而我唯一能想到的是,也许我的路径是错误的?
在我的 .bash_profile
我有
PATH=/usr/local/bin:$PATH
每次我尝试 运行 Laravel 命令时,我都必须在终端中输入:
export PATH="~/.composer/vendor/bin:$PATH"
我正在运行宁Mac。有没有一种简单的方法可以设置我的 bash_profile
,这样我就可以在本地主机地址之间始终如一地进行更改,并且仍然可以使用所有正确的 PHP 功能?
此问题与 PHP 扩展加载器有关。
安装成功后根本不需要使用 laravel 命令。
Laravel 框架需要安全模块的 Mcrypt 库和加密一些配置文件。
你需要的就是这些步骤。
- 下载 Mcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
然后配置make并安装它。
下载phphttp://php.net/releases/index.php
建议5.5.14以上。 (稍后在第 4 步中使用此路径)
然后下载自动配置
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar xvfz autoconf-latest.tar.gz
cd autoconf-2.69/
./configure
make
sudo make install
那么你必须进入目录级别
cd ***YOURPHPDIRECTORY***/ext/mcrypt/
和运行 php在此目录级别
/usr/bin/phpize
./configure
make
sudo make install
修改您的 php.ini 以启用 mcrypt 扩展,方法是将其插入 php.ini
extension=mcrypt.so
- 重新启动网络服务器。
ubuntu
上的更简单方法
apt-get install php5-mcrypt
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
php5enmod mcrypt
service apache2 restart
注意:如果您没有“/etc/php5/conf.d”,只需跳过该步骤即可正常工作
特别针对 Mac 用户 - 使用 Home Brew
安装
我安装了一个空 Laravel 安装并在导航到 http://localhost/kanban/public/ 时收到以下错误消息:
注意:使用未定义常量 MCRYPT_RIJNDAEL_128 – 假设第 83 行 /Library/WebServer/Documents/xxx/config/app.php 中的‘MCRYPT_RIJNDAEL_128′
谷歌搜索此错误消息 return 许多关于如何在 Mac OS X 上安装 mcrypt 的教程(无论是从源代码构建还是使用 Homebrew)。问题是 mcrypt 和 php55-mcrypt 包都已正确安装:
$ brew install mcrypt
Warning: mcrypt-2.6.8 already installed
$ brew install php55-mcrypt
Warning: php55-mcrypt-5.5.20 already installed
Mcrypt 也被 PHP 正确加载:
$ php -m | grep mcrypt
mcrypt
$ php -i | grep mcrypt
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini,
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
有关详细信息,请参阅此 link - http://benohead.com/mac-os-x-php-notice-use-undefined-constant-mcrypt_rijndael_128/
我使用 nginx 和 php-fpm,并且已经 apt-get install php5-mcrypt
,并将 mcrypt.ini
文件移动到 mods-available
。
我必须做 sudo service php5-fpm restart
才能真正发挥作用。
我刚刚在 MacOS 中调整了 .bash_profile
并且它起作用了:
export PATH="/usr/local/sbin:$PATH"
PHP_AUTOCONF="/usr/local/bin/autoconf"
source ~/.bash_aliases
如果您在 ubuntu 或其他风格的 *nix 上看到这个,执行以下操作可能会有所帮助:
service php5-fpm restart
我在 Mac OS Sierra
上尝试将 Laravel
部署到 Apache
时也遇到了这个问题。我最终发现安装了 this post that gave step-by-step instructions to resolve this issue. These instructions assume that you have Homebrew;如果您还没有安装它,请将以下内容粘贴到终端 window 中进行安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
这是从上面给出的 post 粘贴的相关步骤:
第 1 步:安装 autoconf 和 mcrypt
我使用 homebrew 安装了 autoconf 和 mcrypt,非常简单:
brew install autoconf mcrypt
如果这对您不起作用,或者您不想使用自制软件,请查看 this tutorial。
第 2 步:构建 PHP 扩展
要构建 PHP 扩展,您需要 PHP 5.4.17 源代码,该源代码可供下载 here 并解压缩:
cd ~/Downloads
unzip PHP-5.4.17.zip
然后使用以下命令构建扩展:
cd php-src-PHP-5.4.17/ext/mcrypt/
/usr/bin/phpize
./configure
make
sudo make install
第 3 步:启用扩展程序
剩下的就是通过编辑 /etc/php.ini 来启用扩展。如果此文件不存在,请复制 /etc/php.ini.default 并重命名:
sudo cp /etc/php.ini.default /etc/php.ini
编辑 /etc/php.ini 文件并添加以下内容:
extension=mcrypt.so
第 4 步:重新启动 apache
现在只需重新启动 apache 就大功告成了!
sudo apachectl restart
补充说明和说明
我在执行这些步骤时确实遇到了两个问题:
- 我必须将下载的
PHP
zip 文件与我机器上安装的 PHP 版本相匹配。
所以我做到了
php -v
确定版本号,然后更改下载以匹配该版本号。在我的例子中,PHP
版本是 5.6.28,所以我需要从
下载 PHP 源代码
https://github.com/php/php-src/archive/PHP-5.6.28.zip
- 我在第 2 步尝试执行
sudo make install
时出现异常,该异常是由 El Capitan
添加的安全特性 SIP 引起的。 this question, and the resolution to this problem I found in this answer 中概述了例外情况。
应用此答案中的信息更改了上面列出的步骤 2,并将 sudo make install
替换为以下内容:
mkdir -p /usr/local/lib/php/extensions
sudo make EXTENSION_DIR='/usr/local/lib/php/extensions' install
请注意,由于此更改,上面的第 4 步也需要更改以包含 mcrypt.so
的路径。所以下面的内容必须放在 php.ini
:
extension=/usr/local/lib/php/extensions/mcrypt.so
此处有详细说明https://www.php.net/manual/en/install.pecl.windows.php
确保从 PHP 版本
开始选择合适的扩展版本
我已成功安装 Laravel,但是在 运行 宁 php artisan serve
并转到 localhost:8000
之后,我收到此错误:
Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128'
我在 localhost:8888
上检查了 phpinfo()
,它说 mcrypt
已正确安装。然而我唯一能想到的是,也许我的路径是错误的?
在我的 .bash_profile
我有
PATH=/usr/local/bin:$PATH
每次我尝试 运行 Laravel 命令时,我都必须在终端中输入:
export PATH="~/.composer/vendor/bin:$PATH"
我正在运行宁Mac。有没有一种简单的方法可以设置我的 bash_profile
,这样我就可以在本地主机地址之间始终如一地进行更改,并且仍然可以使用所有正确的 PHP 功能?
此问题与 PHP 扩展加载器有关。 安装成功后根本不需要使用 laravel 命令。 Laravel 框架需要安全模块的 Mcrypt 库和加密一些配置文件。
你需要的就是这些步骤。
- 下载 Mcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
然后配置make并安装它。
下载phphttp://php.net/releases/index.php 建议5.5.14以上。 (稍后在第 4 步中使用此路径)
然后下载自动配置
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz tar xvfz autoconf-latest.tar.gz cd autoconf-2.69/ ./configure make sudo make install
那么你必须进入目录级别
cd ***YOURPHPDIRECTORY***/ext/mcrypt/
和运行 php在此目录级别
/usr/bin/phpize ./configure make sudo make install
修改您的 php.ini 以启用 mcrypt 扩展,方法是将其插入 php.ini
extension=mcrypt.so
- 重新启动网络服务器。
ubuntu
上的更简单方法apt-get install php5-mcrypt
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
php5enmod mcrypt
service apache2 restart
注意:如果您没有“/etc/php5/conf.d”,只需跳过该步骤即可正常工作
特别针对 Mac 用户 - 使用 Home Brew
安装我安装了一个空 Laravel 安装并在导航到 http://localhost/kanban/public/ 时收到以下错误消息:
注意:使用未定义常量 MCRYPT_RIJNDAEL_128 – 假设第 83 行 /Library/WebServer/Documents/xxx/config/app.php 中的‘MCRYPT_RIJNDAEL_128′
谷歌搜索此错误消息 return 许多关于如何在 Mac OS X 上安装 mcrypt 的教程(无论是从源代码构建还是使用 Homebrew)。问题是 mcrypt 和 php55-mcrypt 包都已正确安装:
$ brew install mcrypt
Warning: mcrypt-2.6.8 already installed
$ brew install php55-mcrypt
Warning: php55-mcrypt-5.5.20 already installed
Mcrypt 也被 PHP 正确加载:
$ php -m | grep mcrypt
mcrypt
$ php -i | grep mcrypt
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini,
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
有关详细信息,请参阅此 link - http://benohead.com/mac-os-x-php-notice-use-undefined-constant-mcrypt_rijndael_128/
我使用 nginx 和 php-fpm,并且已经 apt-get install php5-mcrypt
,并将 mcrypt.ini
文件移动到 mods-available
。
我必须做 sudo service php5-fpm restart
才能真正发挥作用。
我刚刚在 MacOS 中调整了 .bash_profile
并且它起作用了:
export PATH="/usr/local/sbin:$PATH"
PHP_AUTOCONF="/usr/local/bin/autoconf"
source ~/.bash_aliases
如果您在 ubuntu 或其他风格的 *nix 上看到这个,执行以下操作可能会有所帮助:
service php5-fpm restart
我在 Mac OS Sierra
上尝试将 Laravel
部署到 Apache
时也遇到了这个问题。我最终发现安装了 this post that gave step-by-step instructions to resolve this issue. These instructions assume that you have Homebrew;如果您还没有安装它,请将以下内容粘贴到终端 window 中进行安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
这是从上面给出的 post 粘贴的相关步骤:
第 1 步:安装 autoconf 和 mcrypt
我使用 homebrew 安装了 autoconf 和 mcrypt,非常简单:
brew install autoconf mcrypt
如果这对您不起作用,或者您不想使用自制软件,请查看 this tutorial。
第 2 步:构建 PHP 扩展
要构建 PHP 扩展,您需要 PHP 5.4.17 源代码,该源代码可供下载 here 并解压缩:
cd ~/Downloads
unzip PHP-5.4.17.zip
然后使用以下命令构建扩展:
cd php-src-PHP-5.4.17/ext/mcrypt/
/usr/bin/phpize
./configure
make
sudo make install
第 3 步:启用扩展程序
剩下的就是通过编辑 /etc/php.ini 来启用扩展。如果此文件不存在,请复制 /etc/php.ini.default 并重命名:
sudo cp /etc/php.ini.default /etc/php.ini
编辑 /etc/php.ini 文件并添加以下内容:
extension=mcrypt.so
第 4 步:重新启动 apache 现在只需重新启动 apache 就大功告成了!
sudo apachectl restart
补充说明和说明
我在执行这些步骤时确实遇到了两个问题:
- 我必须将下载的
PHP
zip 文件与我机器上安装的 PHP 版本相匹配。
所以我做到了
php -v
确定版本号,然后更改下载以匹配该版本号。在我的例子中,PHP
版本是 5.6.28,所以我需要从
https://github.com/php/php-src/archive/PHP-5.6.28.zip
- 我在第 2 步尝试执行
sudo make install
时出现异常,该异常是由El Capitan
添加的安全特性 SIP 引起的。 this question, and the resolution to this problem I found in this answer 中概述了例外情况。
应用此答案中的信息更改了上面列出的步骤 2,并将 sudo make install
替换为以下内容:
mkdir -p /usr/local/lib/php/extensions
sudo make EXTENSION_DIR='/usr/local/lib/php/extensions' install
请注意,由于此更改,上面的第 4 步也需要更改以包含 mcrypt.so
的路径。所以下面的内容必须放在 php.ini
:
extension=/usr/local/lib/php/extensions/mcrypt.so
此处有详细说明https://www.php.net/manual/en/install.pecl.windows.php 确保从 PHP 版本
开始选择合适的扩展版本