Composer 安装 Laravel - 学习/实践

发布于:2022-12-25 ⋅ 阅读:(557) ⋅ 点赞:(0)

1.应用场景

使用composer搭建项目框架, 快速实现项目工程.

2.学习/操作

文档阅读猎

安装 | 快速入门 | Laravel 8 中文文档

https://so.csdn.net/so/search?q=composer&t=blog&u=william_n

环境

Windows 10 64 位

phpstudy 8.0

laravel 5.6

满足laravel5.6的环境条件

步骤

1. 安装composer  //这里是局部安装, 全局安装未见生效

可以参见: Packagist / Composer 中国全量镜像   //包括镜像使用方法

由于国内的环境, 推荐使用归档方式安装, 具体步骤如下

1.1 下载归档文件 //这里的归档文件一般都是最新稳定版

浏览器下载:
https://getcomposer.org/composer.phar
或者:

https://install.phpcomposer.com/composer.phar

1.2 与composer.phar同级目录下, 新建composer.bat文件

composer.bat内容:

@php "%~dp0composer.phar" %*

方式:

可手动建立,将内拷贝进去即可.

可命令方式建立, 执行: echo @php "%~dp0composer.phar" %*>composer.bat

1.3 拷贝到web根目录下

常常是www目录, 如下:  

1.4 进入www目录下cmd

方式, 直接资源地址栏中输入 cmd 回车即可

2. 安装laravel

版本laravel 5.6 

参考安装教程: 安装配置 | 快速入门 | Laravel 5.6 中文文档

备注:

安装5.7 5.8 一样的操作, 均有实践.

这里通过通过 Composer Create-Project安装, 具体步骤

2.1 cmd www目录下, 执行:

composer create-project --prefer-dist laravel/laravel laravel56.test 5.6.*

备注:

安装最新版本:

composer create-project --prefer-dist laravel/laravel blog

插入:

php - 安装 laravel --prefer-dist 的含义

php - installing laravel --prefer-dist - Stack Overflow

php - 安装 laravel --prefer-dist - IT工具网

Command-line interface / Commands - Composer

3. 等待安装框架及依赖

安装成功, 共计花了两个小时左右.

推荐是配置国内镜像仓库

参见: Composer - 学习/实践_william_n的博客-CSDN博客

4. 配置虚拟主机

开发环境- 配置虚拟主机域名/hosts文件 - 学习/实践_william_n的博客-CSDN博客

5. 浏览器访问项目

输入: laravel56.test 回车

返回如下:

使用composer安装laravel成功.

后续补充

...

3.问题/补充

1. Packagist[国内/国外], github, composer的关系? 

Packagist中文镜像: Packagist / Composer 中国全量镜像

Packagist国外镜像: Packagist

github: GitHub: Where the world builds software · GitHub

关系如下:

composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

这里依赖的库的简要信息是放在Packagis[Packagist国外镜像Packagist, PHP专用, 用一定环境github压力的作用]上, 具体库文件仍然是放在github[github就是一个大熔炉, 什么[语言]开源项目[也可以放私有项目]放在上面], 所以使用composer安装一个依赖包时, 会先到Packagis检索, 如果检索到, 就会有相应在github上的仓库信息, 然后去拉取下来即可.

但是国内访问Packagist国外镜像很慢, 所以使用Packagist中文镜像[Packagist / Composer 中国全量镜像]每分钟同步Packagist国外镜像,几乎是保持一致, 但是访问国内资源会快很多[一是距离或者是被墙].再使用composer安装依赖的时候,就会从Packagist中文镜像检索信息,从github下载安装依赖.

2. 下载并且运行 Composer-Setup.exe, 方式一直不能成功, 原因是什么?

TBD  //应该是网络问题,访问国外网站, 被墙或者速度太慢

3. 命令行方式安装, 尚未试过.

Packagist / Composer 中国全量镜像

TBD

4. 如果执行  composer create-project --prefer-dist laravel/laravel laravel56.test 5.6.*  

提示如下问题:

[Composer\Exception\NoSslException]
  The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl ex
  tension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.

解决办法:

方式一: 推荐

PHP error when creating a new symfony project using composer - Stack Overflow

方式二:

按照提示信息中说的, 将disable-tls设置为true亦可, 但是风险自担

这里使用方式一,结果如下:

可以看到一些黄色部分提示,有些包已经弃用, 建议使用另外包去替代.

你可以去做, 也可以不做, 只是风险自担.

而且Application key 也已经自动生成. 不用像下载压缩包方式一样, 还要手动去填上.

5. 在laravel中添加公共[助手]函数  --- 涉及到 composer的自动加载机制 

详细参考: Composer 自动加载机制 - 学习/实践_william_n的博客-CSDN博客

添加公共函数类

1) 新建文件,文件名任意:
app/Helpers/function.php
2) 在composer.json 中 autoload 增加:

"autoload":{
    ...
    "files":[
        "app/Helpers/function.php"
    ]        
}

3) 打开cmd, 切换到项目目录, 执行命令:

composer dump-auto

就能在任何地方[controller/model等]引用函数
视图模板中使用方式:{{ functionName() }}

6. 执行: composer install

 出现如下错误:

[RuntimeException]
  Could not scan for classes inside "G:\WilliamNing\phpstudy_pro\WWW\laravel7.1-admin.test\vendor/phpunit/php-code-coverage/src/" which does not appear to be a file nor a folder 

浏览器访问:

原因:

该项目是在公司创建, 仓库源使用的是官方源: Packagist / Composer 中国全量镜像

而且家里使用的是阿里云仓库源: https://mirrors.aliyun.com/composer

同时, 版本管理中有提交composer.lock 文件, 家里访问官方源存在问题, 导致.

解决办法:

删除composer.lock文件, 然后重新执行composer install

结果如下:

浏览器访问:

解决.

Note:

但是在家里提交代码时候请不要将composer的修改提交到版本库中.

另外 根本解决办法: 应该是公司与家里使用相同的仓库源, 推荐阿里云源.

7. 执行composer  require predis/predis   // 20200823 家里

或者

执行 composer dump-autoload

等命令均出现如下报错:

PHP Fatal error:  Class UpdateHelper\ComposerPlugin contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Composer\Plugin\PluginInterface::deactivate, Composer\Plugin\PluginInterface::uninstall) in G:\WilliamNing\phpstudy_pro\WWW\blog57.test\vendor\kylekatarnls\update-helper\src\UpdateHelper\ComposerPlugin.php on line 11

Fatal error: Class UpdateHelper\ComposerPlugin contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Composer\Plugin\PluginInterface::deactivate, Composer\Plugin\PluginInterface::uninstall) in G:\WilliamNing\phpstudy_pro\WWW\blog57.test\vendor\kylekatarnls\update-helper\src\UpdateHelper\ComposerPlugin.php on line 11

原因:

正如报错中说的那样:

PHP致命错误:类UpdateHelper\ComposerPlugin包含2个抽象方法,因此必须声明为抽象方法或实现其余方法.

在文件 G:\WilliamNing\phpstudy_pro\WWW\blog57.test\vendor\kylekatarnls\update-helper\src\UpdateHelper\ComposerPlugin.php 第11行

解决办法: [尝试]

1.  删除该目录

2.  执行: composer update -- prefer-source

3. 执行:composer dump-autoload  

Composer dump-autoload or update results in fatal error on Laravel 5.5 - Stack Overflow

8. 如果PHP的版本不满足composer.json中要求的PHP版本,会提示报错,如下:

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 7.4.30. in /var/www/html/laravel9.test/vendor/composer/platform_check.php on line 24

其他的版本报错,应也是如此。

后续补充

...

4.参考

参见文档阅读列表

后续补充

...