使用未定义的常量MCRYPT_RIJNDAEL_128 - 假设' MCRYPT_RIJNDAEL_128'

时间:2015-05-01 19:06:00

标签: php laravel localhost mcrypt

我已成功安装了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函数?

8 个答案:

答案 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”,只需跳过该步骤即可正常运行

检查http://php.net/manual/en/mcrypt.installation.php

答案 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作为安全模块并加密一些配置文件。

你需要的是这些步骤。

  1. 下载Mcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
  2. 然后配置make并安装它。

    1. 下载php http://php.net/releases/index.php 建议高于5.5.14。 (稍后在步骤4中使用此路径)

    2. 然后下载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
      
    3. 然后你必须转到目录级别

      cd ***YOURPHPDIRECTORY***/ext/mcrypt/
      

      并在此目录级别中运行phpize

      /usr/bin/phpize
      ./configure
      make
      sudo make install
      
    4. 修改你的php.ini以启用mcrypt扩展,方法是将其插入php.ini

      extension=mcrypt.so
      
    5. 重新启动网络服务器。

答案 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上部署ApacheMac 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

其他说明和澄清

我确实遇到了以下步骤的两个问题:

  1. 我必须将我下载的PHP zip文件与我机器上安装的PHP版本相匹配。
  2. 所以我做了

    php -v
    

    确定版本号,然后更改下载以匹配该版本号。在我的情况下,PHP版本是5.6.28,所以我需要从

    下载PHP源代码
    https://github.com/php/php-src/archive/PHP-5.6.28.zip
    
    1. 当我尝试执行sudo make install时,我在第2步遇到异常,异常是由SIP引起的,这是El Capitan添加的安全功能。 this question中列出了例外,并在this answer中找到了解决此问题的方法。
    2. 应用此答案中的信息更改了上面列出的步骤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 版本