windows环境执行composer install出错
现在的项目环境都是要求比较新的版本,就比如今天部署测试一个新框架遇到了下面这些问题,报错原因有以下几点:
- PHP版本低了,现在的新项目都是要求PHP8以上版本;
- 指令废弃,配置文件禁用即可;
- 切换PHP8版本后,扩展没有安装。
1、因为在windows电脑上测试部署新项目需要PHP8.0以上版本,在执行composer -install
时遇到以下错误:
Problem 1
- Root composer.json requires php >=8.0 but your php version (7.3.4) does not satisfy that requirement.
Problem 2
- topthink/framework[v8.0.0, ..., v8.1.2] require php >=8.0.0 -> your php version (7.3.4) does not satisfy that requirement.
- Root composer.json requires topthink/framework ^8.0 -> satisfiable by topthink/framework[v8.0.0, ..., v8.1.2].
根据提示可以看出php版本低了,要求php8.0以上版本,所以接下来切换php版本,再去执行composer
命令。
2、windows电脑上原来的php版本是7.3.4,所以需要设置全局默认的php版本,这就需要去修改系统环境变量。
我使用的是PHPstudy,先在PHPstudy中安装php8.0以上版本,然后根据上图中路径找到安装目录,编辑系统环境变量中的php路径。
3、重新打开 Git Bash
,执行php -v
发现还是报错,这是因为在 PHP 7.0 版本之后,track_errors
指令已经被废弃并且在 PHP 7.2 版本中被完全移除。
解决方法:修改 php.ini
文件,把配置参数 track_errors
改为Off
track_errors=Off
修改后,再执行 php -v
,就能看到默认版本已经切换成功,继续执行 composer install
4、结果又报错了,提示当前 PHP 环境没有启用 OpenSSL 扩展,而 Composer 需要这个扩展来处理 HTTPS 请求,例如从远程仓库下载包。
[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.
开启openssl,这里我单独配置openssl的时候不生效,还报一个提示错误,后来发现是扩展目录extension_dir
不对。
重新配置成当前版本扩展目录:
extension_dir = "E:/phpstudy_pro/Extensions/php/php8.2.9nts/ext/"
5、执行 composer install
,报错,继续套娃,从这里可以明显看出是因为项目所需扩展没有开启。
打开PHPstudy,选择网站,新建一个网站,PHP版本选择8.2.9,与上面对应,创建成功后开启常用的扩展,在网站这里开启php扩展,会对此网站对应的PHP版本,其他使用此版本的项目都生效。
我这里就简单启用了这几个扩展,根据自己的需求启用:
php_curl
php_fileinfo
php_openssl
php_gd
php_intl
php_zip
php_sokets
php_ftp