You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6环境运行Laravel 4项目遇Mcrypt依赖问题求方案

解决Laravel 4 Mcrypt依赖问题或升级至Laravel 5.6的实用方案

针对你在MacOS High Sierra环境下运行Laravel 4时遇到的Mcrypt PHP extension required错误,以及想升级到Laravel 5.6的需求,我给你整理了两个可行的方向:


一、先搞定Mcrypt依赖,让Laravel 4正常跑起来

首先要注意:你同时装了Homebrew PHP和XAMPP PHP,很可能是环境冲突导致扩展没生效,先确认你用的是哪个PHP版本:

  • 终端执行which php,如果输出是/usr/local/bin/php,说明用的是Homebrew的PHP;如果是/Applications/XAMPP/bin/php,则是XAMPP的PHP。

针对Homebrew PHP 7.1安装Mcrypt

  1. 先安装mcrypt基础库:
    brew install mcrypt
    
  2. 安装适配PHP 7.1的mcrypt扩展(注意版本要对应,PHP 7.1只能用1.0.1版本):
    pecl install mcrypt-1.0.1
    
  3. 找到PHP的配置文件(执行php --ini可以看到加载的ini路径,一般是/usr/local/etc/php/7.1/php.ini),在文件末尾添加一行:
    extension=mcrypt.so
    
  4. 重启终端,执行php -m,如果输出里有mcrypt,说明安装成功,再跑php artisan serve试试。

针对XAMPP PHP 7.1安装Mcrypt

XAMPP的PHP扩展需要用对应版本的编译包:

  1. 下载适配PHP 7.1的mcrypt.so(要匹配你的系统架构,比如x86_64)
  2. 把mcrypt.so放到XAMPP的扩展目录,一般是/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/
  3. 修改XAMPP的php.ini(路径是/Applications/XAMPP/xamppfiles/etc/php.ini),添加extension=mcrypt.so
  4. 重启XAMPP的Apache,然后用XAMPP的PHP执行命令:/Applications/XAMPP/bin/php artisan serve

二、手动升级Laravel 4到Laravel 5.6(跨度较大,需谨慎操作)

从Laravel 4直接升到5.6跨度不小,建议先完整备份项目,再按以下步骤来:

1. 重构Composer依赖

  • 替换项目根目录的composer.json为Laravel 5.6的标准配置:
    {
        "name": "laravel/laravel",
        "description": "The Laravel Framework.",
        "keywords": ["framework", "laravel"],
        "license": "MIT",
        "type": "project",
        "require": {
            "php": "^7.1.3",
            "laravel/framework": "5.6.*",
            "fideloper/proxy": "^4.0"
        },
        "require-dev": {
            "filp/whoops": "^2.0",
            "fzaninotto/faker": "^1.4",
            "mockery/mockery": "^1.0",
            "phpunit/phpunit": "^7.0",
            "symfony/thanks": "^1.0"
        },
        "autoload": {
            "classmap": [
                "database/seeds",
                "database/factories"
            ],
            "psr-4": {
                "App\\": "app/"
            }
        },
        "autoload-dev": {
            "psr-4": {
                "Tests\\": "tests/"
            }
        },
        "extra": {
            "laravel": {
                "dont-discover": []
            }
        },
        "scripts": {
            "post-root-package-install": [
                "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
            ],
            "post-create-project-cmd": [
                "@php artisan key:generate"
            ],
            "post-autoload-dump": [
                "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
                "@php artisan package:discover"
            ]
        },
        "config": {
            "preferred-install": "dist",
            "sort-packages": true,
            "optimize-autoloader": true
        }
    }
    
  • 删除vendor目录和composer.lock,执行composer install安装新依赖。

2. 替换核心框架文件

  • 从Laravel 5.6的官方仓库下载基础框架包,替换项目根目录的bootstrap/、config/、public/、resources/、routes/目录(记得先备份原目录里的自定义内容,比如配置文件、静态资源)。
  • 复制新的.env.example,重新配置你的数据库、APP_KEY等环境变量,然后执行php artisan key:generate生成新密钥。

3. 适配代码到Laravel 5.6

  • 命名空间:Laravel 5+的代码都在App\命名空间下,给原Laravel 4的控制器、模型等添加namespace App;声明,同时更新路由里的类引用。
  • 路由调整:Laravel 5.6把路由分成了web.php(前端路由)和api.php(接口路由),把原路由文件的内容迁移到对应文件,注意Route::controller已经被弃用,要改成显式的路由定义(比如Route::get('/user', 'UserController@index'))。
  • 模型更新:原模型要继承Illuminate\Database\Eloquent\Model,替换掉原来的use Eloquent;,同时检查$table、$fillable等属性的设置是否正常。
  • 控制器调整:所有控制器要继承App\Http\Controllers\Controller,调整依赖注入的方式(比如用请求类替代直接取Input)。
  • 迁移文件:Laravel 5的迁移文件结构有变化,把原迁移文件改成新格式,执行php artisan migrate:refresh前一定要备份数据库数据。

4. 测试与排错

  • 启动服务php artisan serve,逐个测试功能模块,遇到错误可以查看storage/logs/laravel.log排查问题,常见的问题比如类找不到、方法过时,逐一修复即可。

内容的提问来源于stack exchange,提问作者dlfjj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:39:30