composer-php 相关问题

Composer是PHP编程语言的应用程序级包管理器。它提供了一种标准格式,可以轻松管理基于PHP的项目依赖项(库),并受到Node.js的“npm”和Ruby的“bundler”的强烈启发。 Composer由Nils Adermann和Jordi Boggiano开发。他们都继续管理这个项目。更多信息,请访问https://getcomposer.org。

错误:Composer 安装程序脚本不成功 [退出代码 1]

每当我尝试安装作曲家时,都会发生此问题,而且我没有使用代理服务器。 Composer 安装程序脚本不成功 [退出代码 1]。 脚本输出: “https://getcomposer....

回答 0 投票 0

如何更改 Lando 8.1.2 中的 php 版本

这是我的第一个问题。我是初学者。我正在与 sage 一起从事 wordpress 项目。当我尝试运行模板时,出现错误: composer版本还可以,但是Lando版本是php7.4...

回答 4 投票 0

在本地windows环境XAMPP上配置PIMCore项目版本6.7

我是PIMCore开发的初学者,有一个6.7版本的项目, 我的问题是我必须遵循哪些步骤才能在本地计算机上运行/配置项目。要么命令'composer in ...

回答 0 投票 0

作曲家不在 Git Bash 中工作,显示“哪个:没有 php”

当像 composer -v 这样运行 composer 命令时,它显示 其中: (/c/Users/Vincent/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/ 中没有 php Vincent/bin:/c/Windows/系统...

回答 1 投票 0

如何修复在没有互联网连接的情况下找不到接口“Psr\Http\Client\ClientInterface”?

以前的开发人员似乎搞砸了作曲家,现在在我运行 composer dump-autoload 之后,应用程序被破坏了。 这是一个遗留的内部应用程序,无法访问互联网,所以我无法将文件复制到我...

回答 2 投票 0

Magento 从 1.9.4.5 升级到 Openmage 20.x

我需要将我的 Magento 1.9.4.5 站点升级到 Openmage 20.x 我遵循了迁移指南 https://www.openmage.org/magento-lts/migration-guide.html 或 https://github.com/OpenM 中的指南...

回答 0 投票 0

在不同的 PHP 版本中运行 `composer update`

我正在做一个 Laravel 项目。我的 composer.json 文件如下所示。 { “名称”:“拉拉维尔/拉拉维尔”, “类型”:“项目”, “描述”:...

回答 0 投票 0

安装 ext-grpc 以允许在 google/cloud-firestore 中更新

我正在尝试使用 composer 安装 google-firestore,但它只安装了它的最旧版本“包固定为 v0.1.0(锁定文件版本)”。问题是 google/cloud-firestore

回答 0 投票 0

PHP 运行 artisan 命令时不推荐使用的问题

每当我运行工匠命令时,我都会遇到这个问题。 我正在使用 Valet 和 PHP 8.1。我已经尝试更改 PHP 的版本,但我仍然遇到这个问题。 当我跑步时: jakefeeley@Jakes-MBP 营销...

回答 8 投票 0

Laravel 9 Composer 检测到 PHP 版本问题

我看到其他人问过这个问题,但没有一个解决方案似乎对我和其他人有用 眼镜 适用于 Laravel 8 的 PHP 7.4 适用于 Laravel 9 的 PHP 8.2 Ubuntu 服务器 18.4 Nginx 版本 1.14.0 (...

回答 1 投票 0

composer install / composer upgrade can't clone git repo

在 docker 中,我有一个 composer.json,它旨在创建一个具有特定安装的 wordpress 的本地主机,我正在尝试使用它的 .git 安装,所以我运行 composer install --prefer-source b ...

回答 0 投票 0

Laravel PackageManifest.php 第 131 行:未定义索引:名称

我用这个命令更新了作曲家: 作曲家自我更新 它已更新到版本 2.0.4。然后当我尝试使用以下命令启动我的 Laravel 项目时: php 工匠服务 我收到此错误: 在

回答 8 投票 0

用 composer 安装 PHPUnit 后出现错误

Composer 全新安装的 PHPUnit。当我尝试输入终端 VSCode“phpunit”时,它给了我错误。为了安装 PHPUnit,我使用了命令“composer require --dev phpunit/phpunit ^10”...

回答 1 投票 0

Docker:来自守护进程的错误响应:创建挂载源路径'/host_mnt/root/.gitconfig'时出错:mkdir /host_mnt/root:不允许操作

在过去的两天里,我一直在尝试使用 act 工具在本地运行 github action。 我的动作是这样的: 姓名:斯坦 开:[推] 工作: 斯坦: 运行:ubuntu-latest 脚步: -...

回答 0 投票 0

bash:作曲家:找不到命令

在服务器上我想做 composer update/install 并且都给出错误: -bash:作曲家:找不到命令 我可以看到 composer.phar、composer.json 和 composer.lock 在那里。我怎样才能知道...

回答 5 投票 0

关于许可证的条件(MIT,BSD-3 ...),如何满足“许可证和版权声明”条件?

例如,在laravel项目中,当我运行composer i命令时,composer.json中指定的所有包都将安装在vendor文件夹中。 只要他们每个人都已经

回答 0 投票 0

使 packagist 需要 github 工件(而不是提交)

我正在使用 packagist.org 发布一些自定义的 php 包,以便可以通过作曲家安装(或者更确切地说是必需的),但是我有一些包需要一些构建步骤(用于编译 ...

回答 1 投票 0

Pusher Channel 通知在第二台电脑上不起作用

我是 Laravel 的新手, 我正在制作一个带有评论部分的博客应用程序,当我使用推送器发送评论时,我不必刷新页面。 但这只适用于我的一台电脑,而不适用于我的人......

回答 0 投票 0

什么用户选择在 Ubuntu 22.04/Plesk Obsidian 上使用 Composer 安装软件包?

在虚拟服务器(Ubuntu 22.04/Plesk Obsidian)上我想安装一个 composer 项目,但是由于以 root/超级用户身份运行 Composer 是不好的做法,我必须切换到另一个用户。 W...

回答 1 投票 0

Laravel 没有发现我正在开发的包

我正在开发一个包,但不知何故我无法让 Laravel 发现它。 包位于应用程序的根目录中,并遵循下一个结构: 文件: 状态管理器.php 我正在开发一个包,但不知何故我无法让 Laravel 发现它。 包在应用程序的根目录下并遵循下一个结构: 文件: StatusManager.php <?php namespace Troyerx\StatusManager; trait StatusManager { //Code } Composer.json 在packages/troyerx/statusmanager/ { "name": "troyerx/statusmanager", "description": "Simple model status manager", "license": "MIT", "keywords": [ "troyerx", "php", "statusmanager" ], "authors": [ { "name": "Sergio", "email": "[email protected]" } ], "autoload": { "psr-4": { "Troyerx\\Statusmanager\\": "src/" } }, "require": {} } 小米应用 composer.json 看起来像: { "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "php": "^8.1", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0" }, "autoload": { "psr-4": { "App\\": "app/", "Troyerx\\Statusmanager\\": "packages/troyerx/statusmanager/src/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Troyerx\\Statusmanager\\": "packages/troyerx/statusmanager/src/", "Tests\\": "tests/" } }, "scripts": { "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate --ansi" ] }, "extra": { "laravel": { "dont-discover": [] } }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true, "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true } }, "minimum-stability": "stable", "prefer-stable": true } 由于包被标记为在自动加载时被发现,我应该期望在运行时包含它: composer dump-autoload 但是我得到以下提示: Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi INFO Discovering packages. laravel/sail ................................................................................................................................ DONE laravel/sanctum ............................................................................................................................. DONE laravel/tinker .............................................................................................................................. DONE nesbot/carbon ............................................................................................................................... DONE nunomaduro/collision ........................................................................................................................ DONE nunomaduro/termwind ......................................................................................................................... DONE spatie/laravel-ignition ..................................................................................................................... DONE Generated optimized autoload files containing 5729 classes 如果我在模型中调用特性,它不会自动加载 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Troyerx\StatusManager\StatusManager as StatusManager; class Order extends Model { use StatusManager; } 给出下一个错误: Trait "Troyerx\StatusManager\StatusManager" not found 为什么 Laravel 没有加载我的包?我错过了哪一步或问题出在哪里? 所以,你的包裹的composer.json应该是这样的: { "name": "troyerx/statusmanager", "description": "Simple model status manager", "license": "MIT", "version": "1.0.0", "keywords": [ "troyerx", "php", "statusmanager" ], "authors": [ { "name": "Sergio", "email": "[email protected]" } ], "require": { "laravel/framework": "^10.0" }, "autoload": { "psr-4": { "Troyerx\\Statusmanager\\": "src/" } } } 看到我有: 添加了一个require(Laravel Framework),所以它依赖于Laravel(如果是纯PHP,去掉它) 我还添加了version,这样你就可以跟踪版本,这样更容易 你的主要composer.json应该是这样的(我会列出我更改或添加的部分): { "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "php": "^8.1", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8", "troyerx/statusmanager": "^1.0" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0" }, "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, "repositories": [ { "type": "path", "url": "packages/" }, ], "scripts": { "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate --ansi" ] }, "extra": { "laravel": { "dont-discover": [] } }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true, "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true } }, "minimum-stability": "stable", "prefer-stable": true } 我有: 从autoload和autoload-dev中删除了您的自定义命名空间 添加了一个带有版本约束的普通require 在文件中添加repositories部分链接到它应该查找的文件夹 所以,首先编辑你的包的 composer 文件,然后将 repositories 添加到你的主 composer 文件中,然后使用命令行执行 composer require troyerx/statusmanager:^1.0 并完成,它会自动被选中。 记得将包的作曲家版本(version部分)升级到新版本,然后只需在主作曲家中运行composer update troyerx/statusmanager就可以了! 这是我用过的作曲家文档:https://getcomposer.org/doc/05-repositories.md#path 要记住的一件事:如果你正在开发一个 Laravel 包,你不应该在 database 里面有 factories 和 src,但是在外面,然后有那个包的 composer.json 像这样: { "name": "troyerx/statusmanager", "description": "Simple model status manager", "license": "MIT", "version": "1.0.0", "keywords": [ "troyerx", "php", "statusmanager" ], "authors": [ { "name": "Sergio", "email": "[email protected]" } ], "require": { "laravel/framework": "^10.0" }, "autoload": { "psr-4": { "Troyerx\\Statusmanager\\": "src/", "Troyerx\\Statusmanager\\Database\\Factories\\": "database/factories/", "Troyerx\\Statusmanager\\Database\\Seeders\\": "database/seeders/" } } } 您需要拥有自己的ServiceProvider并将其添加到包的作曲家extra -> laravel部分,如下所示:https://github.com/barryvdh/laravel-ide-helper/blob/4dc20b028adaeadf603860f179f09da5aa21f5b5/composer.json# L70-L74 使用该开发包作为如何实现您自己的包的指南,它应该看起来非常相似(至少与您的文件一样,但结构明智)。 使用 Laravel Jetstream(例如),查看如何加载迁移。请以它为例。 请记住,所有 Laravel 包都像那两个,所以如果您知道一个包,请转到 github 并查看其结构以及它在 composer.json 等中的内容。按照那个! 我找到了解决方案,让 Laravel 在我运行时发现/安装我的包composer dump-autoload. 在我添加的应用程序 composer.json 中: "repositories": [ { "type": "path", "url": "packages/troyerx/statusmanager", "options": { "symlink": true } } ], 并在 require-dev 中添加下一行: "require-dev": { ... "troyerx/statusmanager": "@dev" }, 运行后composer update发现包: INFO Discovering packages. laravel/sail ................................................................................................................................ DONE laravel/sanctum ............................................................................................................................. DONE laravel/tinker .............................................................................................................................. DONE nesbot/carbon ............................................................................................................................... DONE nunomaduro/collision ........................................................................................................................ DONE nunomaduro/termwind ......................................................................................................................... DONE spatie/laravel-ignition ..................................................................................................................... DONE troyerx/statusmanager ....................................................................................................................... DONE

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.