我已成功安装了Laravel,但在运行php artisan serve
并转到localhost:8000
后,我收到此错误:
使用未定义的常量MCRYPT_RIJNDAEL_128 - 假设' MCRYPT_RIJNDAEL_128'
我已在phpinfo()
上检查了localhost:8888
,并说mcrypt
已正确安装。然而,我唯一能想到的是,我的道路可能是错的?
在.bash_profile
我有
PATH=/usr/local/bin:$PATH
每当我尝试运行Laravel命令时,我必须在终端中输入:
export PATH="~/.composer/vendor/bin:$PATH"
我在Mac上运行。有没有一种简单的方法可以设置我的bash_profile
,以便我可以在localhost地址之间不断更改并且仍然可以使用所有正确的PHP函数?
答案 0 :(得分:9)
在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”,只需跳过该步骤即可正常运行
答案 1 :(得分:3)
对于Mac用户,请使用 Home Brew
进行安装我安装了一个空的Laravel安装,并在导航到http://localhost/kanban/public/时收到以下错误消息:
注意:使用未定义的常量MCRYPT_RIJNDAEL_128 - 在第83行的/Library/WebServer/Documents/xxx/config/app.php中假设为“MCRYPT_RIJNDAEL_128”
谷歌搜索此错误消息返回许多关于如何在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
有关详细信息,请参阅此链接 - http://benohead.com/mac-os-x-php-notice-use-undefined-constant-mcrypt_rijndael_128/
答案 2 :(得分:2)
如果您在ubuntu或其他版本的* nix上看到这一点,可能有助于执行以下操作:
service php5-fpm restart
答案 3 :(得分:1)
这个问题相对于PHP扩展加载器。 安装成功后,您根本不需要使用laravel命令。 Laravel框架需要Mcrypt Library作为安全模块并加密一些配置文件。
你需要的是这些步骤。
然后配置make并安装它。
下载php http://php.net/releases/index.php 建议高于5.5.14。 (稍后在步骤4中使用此路径)
然后下载Autoconfigure
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/
并在此目录级别中运行phpize
/usr/bin/phpize
./configure
make
sudo make install
修改你的php.ini以启用mcrypt扩展,方法是将其插入php.ini
extension=mcrypt.so
答案 4 :(得分:0)
我使用nginx和php-fpm,已经apt-get install php5-mcrypt
,并将mcrypt.ini
文件移到了mods-available
。
在实际工作之前,我必须做sudo service php5-fpm restart
。
答案 5 :(得分:0)
我刚刚调整了MacOS中的.bash_profile
并且有效:
export PATH="/usr/local/sbin:$PATH"
PHP_AUTOCONF="/usr/local/bin/autoconf"
source ~/.bash_aliases
答案 6 :(得分:0)
尝试在Laravel
上部署Apache
到Mac OS Sierra
时,我也遇到了这个问题。我最终找到了this post,它提供了解决此问题的分步说明。这些说明假设您已安装Homebrew;如果您没有安装它,请将以下内容粘贴到终端窗口中进行安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
以下是从上面给出的帖子粘贴的相关步骤:
第1步:安装autoconf和mcrypt
我用homebrew安装autoconf和mcrypt,这很简单:
brew install autoconf mcrypt
如果这对您不起作用,或者您不想使用自制程序,请查看this tutorial。
第2步:构建PHP扩展
要构建PHP扩展,您需要可以下载here的PHP 5.4.17源代码并将其解压缩:
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
sudo make install
时,我在第2步遇到异常,异常是由SIP引起的,这是El Capitan
添加的安全功能。 this question中列出了例外,并在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
答案 7 :(得分:0)
此处有详细说明https://www.php.net/manual/en/install.pecl.windows.php 确保选择合适的扩展版本作为 PHP 版本