composer 永久忽略安装包时提示依赖 xx 扩展 作者: Chuwen 时间: 2024-07-02 分类: PHP 评论 ## 问题 在本地开发时,如果使用 composer 安装 composer 包经常会遇到这种提示: ``` Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires php ^8.3 but your php version (8.2.9) does not satisfy that requirement. Problem 2 - Root composer.json requires PHP extension ext-posix * but it is missing from your system. Install or enable PHP's posix extension. Problem 3 - Root composer.json requires PHP extension ext-rdkafka * but it is missing from your system. Install or enable PHP's rdkafka extension. Problem 4 - hhxsv5/laravel-s is locked to version v3.8.0 and an update of this package was not requested. - hhxsv5/laravel-s v3.8.0 requires ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension. Problem 5 - laravel/horizon is locked to version v5.24.4 and an update of this package was not requested. - laravel/horizon v5.24.4 requires ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension. Problem 6 - laravel/pail is locked to version v1.1.3 and an update of this package was not requested. - laravel/pail v1.1.3 requires ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension. To enable extensions, verify that they are enabled in your .ini files: - C:\Users\Shine\.pvm\versions\php-8.2\php.ini You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode. Alternatively, you can run Composer with `--ignore-platform-req=ext-posix --ignore-platform-req=ext-rdkafka --ignore-platform-req=ext-pcntl` to temporarily ignore these required extensions. You can also try re-running composer require with an explicit version constraint, e.g. "composer require dcat/laravel-admin:*" to figure out if any version is installable, or "composer require dcat/laravel-admin:^2.1" if you know which you need. Installation failed, reverting ./composer.json and ./composer.lock to their original content. ``` ![](https://cdn.nowtime.cc/2024/07/02/2434538828.png) 实际上在本机开发过程中通常不需要用到这些依赖扩展,或者你是 Windows 作为开发环境,那么像 `posix`, `pcntl` 扩展在 Windows 上是安装不上的,所以我都会加上 `--ignore-platform-reqs` 选项,来跳过对这些扩展的检查,但是每次装 composer 包都要手打这个选项实在是太过繁琐,有没有直接替我加上这个选项的方法? ## 过程 通过查阅[Composer 官方文档](https://getcomposer.org/doc/03-cli.md#composer-ignore-platform-req-or-composer-ignore-platform-reqs "Composer 官方文档"),确实有这么一个方法,设置一个环境变量 `COMPOSER_IGNORE_PLATFORM_REQS=1` 即可解决 ## 结果 Windows 添加环境变量 1. 按下 `Win` + `R` 输入 `sysdm.cpl` 然后按 `Enter` 2. 选择“环境变量” 3. 新建环境变量 4. 输入变量名 `COMPOSER_IGNORE_PLATFORM_REQS` 5. 输入变量值 `1` 6. 确定 -> 确定 -> 确定 7. 完成 ![](https://cdn.nowtime.cc/2024/07/02/3423099981.png)
php-cs-fix 只格式化已经修改的代码 / 只格式化某次提交的代码 作者: Chuwen 时间: 2023-09-21 分类: PHP 评论 ## 前提 注意需要在 `composer.json` 中的 `scripts:` 部分添加 `"cs-fix": "php-cs-fixer fix $1"`,如下示例 ```json { "name": "hyperf/hyperf-skeleton", "type": "project", // ... "autoload": { "psr-4": { "App\\": "app/" }, "files": [] }, "scripts": { // ...... "cs-fix": "php-cs-fixer fix $1", // ...... }, } ``` ## 命令 ### 只格式化已经修改的代码 ```shell git diff --name-only --cached | grep '\.php$' | xargs -n1 composer cs-fix ``` 1. `git diff --name-only --cached`:这部分命令用于获取你已经暂存(staged)的修改文件的列表。 2. `grep '\.php$'`:通过管道将文件列表传递给grep命令,这将只选择扩展名为 `.php` 的文件。 3. `xargs -n1 composer cs-fix`:xargs命令将每个文件名作为参数传递给 `composer cs-fix` 命令,从而格式化每个文件的代码。 ### 格式化某次提交的代码 ```shell git diff-tree --no-commit-id --name-only -r | grep '\.php$' | xargs -n1 composer cs-fix ``` 1. `git diff-tree --no-commit-id --name-only -r `:这部分命令获取了特定提交记录中的修改文件列表。 > **** 可以从 `git log` 获取 2. `grep '\.php$'`:通过管道将文件列表传递给 `grep` 命令,这将只选择扩展名为 `.php` 的文件。 3. `xargs -n1 composer cs-fix`:`xargs` 命令将每个文件名作为参数传递给 `composer cs-fix` 命令,从而格式化每个文件的代码。
Laravel 添加模型方法注释,使 PHPStorm 有语法提示 作者: Chuwen 时间: 2021-06-30 分类: Laravel,PHP 评论 ## 安装 1. 在 PHPStorm 上装 `Laravel` 插件 ![](https://cdn.nowtime.cc/2021/06/30/1433782083.png) 2. 在项目中添加 `barryvdh/laravel-ide-helper` 包 ```shell composer require barryvdh/laravel-ide-helper ``` ## 使用 1.为**所有模型**添加注释 ```shell php artisan ide-helper:models ``` 2.为**指定模型**添加注释 > 以下展示的是为 `App\Models\Admin` 模型添加注释,*\App\Models\Admin* 是模型的命名空间名字 ```shell php artisan ide-helper:models \App\Models\Admin ``` 3.为 Facades 生成注释 ```shell php artisan ide-helper:generate ``` 4.生成 PHPstorm Meta file ```shell php artisan ide-helper:meta ``` ## 运行为“模型添加注释”后的截图 ![](https://cdn.nowtime.cc/2021/06/30/3502548972.png)
Linux 指定用户执行命令 / Composer 因权限问题导致无法执行 作者: Chuwen 时间: 2021-05-14 分类: Linux 评论 ## 背景 在网上查到的使用 `su 用户名 -c "命令"` 即可指定用户执行某些命令 但是运行结果是这样的 > This account is currently not available. ```log [root@izvkgq9z www.xxxx.com]# su www -c "composer install" This account is currently not available. ``` 原来设置了该用户不能用以登录 ``` [root@izvkgq9z www.xxxx.com]# cat /etc/passwd | grep www www:x:1000:1000::/home/www:/sbin/nologin ``` ## 解决办法 > 使用 `su 用户名 -s /bin/bash -c "需要执行的命令"` ``` su -s /bin/bash -c "composer install" www ``` --- > 以下是额外话题 ## composer 安装出现新的问题 执行 `composer install` 报了以下错误 ``` [RuntimeException] Could not delete /home/wwwroot/www.xxxx.com/vendor/kylekatarnls/update-helper/composer.json: Directive 'track_errors' is deprecated ``` 大概意思是不能删除文件,然后就想到了权限问题,然后看了下权限信息 ``` [root@izvkgq9z www.xxxx.com]# ll | grep vendor drwxr-xr-x 47 root root 4096 May 14 13:55 vendor ``` 猜测是项目自动构建之类的,权限没弄好,本应该是 `www` 权限的,这个简单了,使用 `chgrp` 和 `chown` 命令改一下 `vender` 目录及其子目录/文件 用户组和所有者 ``` # 更改用户组 chgrp www -R vendor # 更改所有者 chown www -R vendor ```
Laravel 安装指定版本 作者: Chuwen 时间: 2020-11-23 分类: PHP 评论 ```shell composer create-project --prefer-dist laravel/laravel blog "6.*" ```