PHP的Laravel与Composer部署项目时常见问题

2022-04-19 12:13:54 浏览数 (1)

我们在部署PHP项目时,其实大部分的PHP项目会创建环境检测与一键Install页面。

但是,有许多的项目还采用了Composer部署。

什么是Composer

至于什么是Composer,我就简单说一下。

Composer是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。

相当于Node里面的npm

Laravel框架

Laravel是一个开源PHP框架,功能强大且易于理解。它遵循模型 - 视图 - 控制器设计模式(MVC)。Laravel重用了不同框架的现有组件,这有助于创建Web应用程序。这样设计的Web应用程序更加结构化和实用。

具体特点我就不说了,其中比较显著的是,依赖管理器完全基于composer

报错:php artisan key:generate

这个错误,一般有三个问题,对应解决一下。

报错1:PHP脚本占用内存太多,memory_limit默认128m不够用。 PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted 。 Composer命令失败: Composer内部增加memory_limit到1.5G.

报错2:PHP版本问题。

这个就对症分析就可以。

注意的是,有时候不是你项目PHP版本不行,而是你composer的版本没有对应。

报错3:需要更新composer。

代码语言:javascript复制
composer update

Laravel 出现 No application encryption key has been specified.

首先,我们要看看有没有.env文件,或者.env文件后还追加了.example后缀。

1、.env.example 改名使用命令 copy 修改为 .env。

此时可能还提示缺少了Key。我们使用命令生成。

2、使用命令 php artisan key:generate 获取密码,自动保存到 .env。

命令直接在终端运行就可以。

Composer获取依赖超时

首先判断是否存在这个依赖包。

其次,可能是国外的源,下载超时很正常,我们使用命令将源改为国内的源。

代码语言:javascript复制
composer config -g repo.packagist composer https://packagist.phpcomposer.com 

Composer 升级带来的坑: Undefined index: name

我在部署时也遇到了这个问题,我们可以直接尝试回滚版本或者降低版本,部署上去后再升级回来。

代码语言:javascript复制
Undefined index: name

如果存在这个报错,那么我们可以这样:

代码语言:javascript复制
# composer 降级
composer self-update --1
 
# 再次安装,即可!!!
composer install

或者不需要再次安装,我们直接运行第一句也可以。

代码语言:javascript复制
composer self-update --1

至于其他方法,不建议,我也就不写了。

0 人点赞