PuPHPeteer php桥接包无法在Laravel 9上安装。
PuPHPeteer php桥接包无法在Laravel 9上安装。
这个包nesk/puphpeteer已经被存档,不再适用于Laravel 9。然而,我相信有一些分支会适用于Laravel 9,因为这些分支中composer错误的依赖已经更新。我在composer文档中尝试了这些步骤,但是似乎无法将一个分支安装为composer依赖项。如有指导,请不吝赐教。
在我的composer.json
中,我有以下新条目。
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/NigelCunningham/puphpeteer.git"
}
],
"require": {
"nesk/puphpeteer": "dev-dev"
}
}
当我运行composer update
时,出现以下错误:
"Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires nesk/puphpeteer dev-dev -> satisfiable by nesk/puphpeteer[dev-dev]."
在编写本文时,PuPHPeteer PHP桥接包(https://github.com/NigelCunningham/puphpeteer.git)尚未准备好适用于Laravel 9。
尝试在Laravel 9.0.0的第一个稳定版本上安装它(composer create-project laravel/laravel example-app 9.0.0)。
composer.json(新条目)
{
"repositories": [
{
"url": "https://github.com/NigelCunningham/puphpeteer.git",
"type": "git"
}
],
"require": {
"nigelcunningham/puphpeteer": "^2.0.0"
},
"minimum-stability": "dev"
}
它抛出了以下错误:composer update
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/process[v4.0.0-BETA1, ..., v4.4.10] require php ^7.1.3 -> your php version (8.1.6) does not satisfy that requirement.
- symfony/process[v5.0.0-BETA1, ..., v5.0.0-RC1] require php ^7.2.9 -> your php version (8.1.6) does not satisfy that requirement.
- symfony/process[v5.0.0, ..., v5.1.0-RC1] require php ^7.2.5 -> your php version (8.1.6) does not satisfy that requirement.
- Root composer.json requires laravel/framework ^9.0 -> satisfiable by laravel/framework[v9.0.0-beta.1, ..., 9.x-dev].
- Root composer.json requires nigelcunningham/puphpeteer ^2.0.0 -> satisfiable by nigelcunningham/puphpeteer[2.0.0].
- Conclusion: don't install symfony/console[v6.0.19] | install symfony/process[v5.4.19] (conflict analysis result)
- Conclusion: don't install symfony/console[v6.0.3] | install symfony/process[v5.4.19] (conflict analysis result)
- Conclusion: don't install nunomaduro/collision[v6.4.0] | install symfony/process[v5.4.19] (conflict analysis result)
- Conclusion: don't install symfony/process v5.4.19 (conflict analysis result)
- Conclusion: don't install symfony/console[v6.2.5] | install symfony/process[v5.4.19] (conflict analysis result)
- nigelcunningham/puphpeteer 2.0.0 requires nesk/rialto ^1.2.0 -> satisfiable by nesk/rialto[1.2.0, 1.2.1, 1.3.0, 1.4.0].
- nesk/rialto 1.4.0 requires symfony/process ^3.3|^4.0|^5.0 -> satisfiable by symfony/process[v3.3.0-BETA1, ..., 3.4.x-dev, v4.0.0-BETA1, ..., 4.4.x-dev, v5.0.0-BETA1, ..., 5.4.x-dev].
- nesk/rialto[1.2.0, ..., 1.3.0] require symfony/process ^3.3|^4.0 -> satisfiable by symfony/process[v3.3.0-BETA1, ..., 3.4.x-dev, v4.0.0-BETA1, ..., 4.4.x-dev].
- symfony/console 6.3.x-dev conflicts with symfony/process v5.3.14.
- symfony/console 6.3.x-dev conflicts with symfony/process v5.3.2.
- symfony/console 6.3.x-dev conflicts with symfony/process v5.0.11.
- symfony/console 6.3.x-dev conflicts with symfony/process v4.4.44.
- symfony/console 6.3.x-dev conflicts with symfony/process v4.4.26.
- symfony/console 6.3.x-dev conflicts with symfony/process v3.4.47.
- symfony/console 6.3.x-dev conflicts with symfony/process v3.3.6.
- nunomaduro/collision[v6.1.0, ..., v6.2.1] require symfony/console ^6.0.2 -> satisfiable by symfony/console[v6.0.2, ..., 6.3.x-dev].
- Root composer.json requires nunomaduro/collision ^6.1 -> satisfiable by nunomaduro/collision[v6.1.0, ..., v6.x-dev].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
如果你将注意力集中在下面的这一行上:
- nigelcunningham/puphpeteer 2.0.0 requires nesk/rialto ^1.2.0 -> satisfiable by nesk/rialto[1.2.0, 1.2.1, 1.3.0, 1.4.0]。
包`nigelcunningham/puphpeteer`需要依赖关系`nesk/rialto`,而最新版本的`nesk/rialto`需要`symfony/process: ^3.3|^4.0|^5.0`。不幸的是,Laravel v9.0.0需要`symfony/process: ^6.0`,这导致不兼容。
在你的问题中,你在`composer.json`文件中声明了一个所需的依赖关系`nesk/puphpeteer`。它与上述Laravel v9.0.0的不兼容问题相同。
它抛出了以下错误:composer update
- nesk/puphpeteer dev-dev requires nesk/rialto ^1.2.0 -> satisfiable by nesk/rialto[1.2.0, 1.2.1, 1.3.0, 1.4.0]。 - nesk/rialto 1.4.0 requires symfony/process ^3.3|^4.0|^5.0 -> satisfiable by symfony/process[v3.3.0-BETA1, ..., 3.4.x-dev, v4.0.0-BETA1, ..., 4.4.x-dev, v5.0.0-BETA1, ..., 5.4.x-dev]。
补充说明:
评论者(dfeva)的评论:
Thanks for the great answer! it looks like this nesk/rialto fork is updated to symphony/process ^6.0. github.com/zoonru/rialto/blob/zoon/composer.json. How can I install that first so then I should be able to install github.com/zoonru/puphpeteer if im understating correctly. Thanks for your help!
为了实现这一点,你可以使用以下方法:
composer.json(新条目)
{
"repositories": [
{
"url": "https://github.com/zoonru/rialto.git",
"type": "git"
},
{
"url": "https://github.com/zoonru/puphpeteer.git",
"type": "git"
}
],
"require": {
"nesk/puphpeteer": "dev-master"
},
"minimum-stability": "dev"
}
不幸的是,编写本文时,最新的git标签(2020年4月12日发布的Version 1.4.0)对`zoonru/rialto`依赖项依赖于旧版本的`"symfony/process": "^3.3|^4.0|^5.0"`。在2022年8月16日后,进行了支持新Symfony组件的更改(`"symfony/process": "^3.3 || ^4.0 || ^5.0 || ^6.0"`)。遗憾的是,尚未正式发布反映这些更改的新的git标签。
临时解决方法(请谨慎使用):
如果你仍然坚持要安装`zoonru/puphpeteer`,你可能需要fork`https://github.com/zoonru/rialto`并创建一个反映仓库中进行的新更改的新git标签。
步骤:
1. Fork `zoonru/rialto`仓库。阅读[Forking a repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo#forking-a-repository)。
2. 克隆你fork的版本的仓库。阅读[Cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository#cloning-a-repository)。
3. 在你fork的版本的仓库根目录中打开终端。运行命令`git tag 1.5.0 -a`创建一个新的git标签(包含一个描述,例如`Version 1.5.0`)。使用命令`git push origin --tags`将新的git标签推送到你的远程forked仓库。
4. 现在,你应该能够在你的远程forked仓库上看到最新的git标签,例如`https://github.com/YOUR-GITHUB-USERNAME-HERE/rialto/tags`。
5. 现在,在你的Laravel项目的`composer.json`文件中,使用你新forked的远程仓库版本,而不是`https://github.com/zoonru/rialto.git`。
6. 在Laravel项目的根目录中打开终端,运行`composer update`命令,这将安装`zoonru/puphpeteer`。
希望你记得在Laravel项目的`composer.json`文件中用原始的`https://github.com/zoonru/rialto.git`仓库URL替换你forked的仓库URL,并在`zoonru/rialto`发布新的官方git标签时重新安装`zoonru/puphpeteer`。
感谢你的回答!它在Laravel 9上起作用了。`psr/log`从3.0.0降级到了1.1.4,我将看看在框架中是否会有什么麻烦。除了将新的Chromium驱动程序版本路径指向以及安装这些依赖项之外,一切都工作正常!非常感谢!
你很欢迎!我很高兴能帮助到你。谢谢你与我们分享你的发现。
作为一个正在写作的人,我发现PuPHPeteer PHP桥包在Laravel 9上安装不成功。经过我的研究,我发现了问题的原因和解决方法。
问题的原因是PuPHPeteer PHP桥包在Laravel 9上无法成功安装。具体原因可能是由于PuPHPeteer的兼容性问题,导致无法在Laravel 9上正常运行。
解决方法是使用spatie/browsershot作为替代方案。spatie/browsershot是一个很好的解决方案,它支持Laravel 10,并且无需对代码进行任何更改即可正常运行。它可以完成nesk/puphpeteer所能做的事情,并且有一个活跃的社区支持。
对于遇到类似问题的开发者来说,我建议尝试使用spatie/browsershot作为替代方案。下面是一个简单的示例代码,展示了如何在Laravel中使用spatie/browsershot:
use Spatie\Browsershot\Browsershot; Browsershot::url('https://example.com') ->save('example.png');
以上就是PuPHPeteer PHP桥包无法在Laravel 9上安装的原因和解决方法。希望这篇文章对遇到类似问题的开发者有所帮助。
PuPHPeteer php bridge package unable to install on Laravel 9的问题出现的原因是原始的Puppeteer库不再维护,现在需要依赖于分支来在最新的Laravel项目中使用它。
解决方法是使用Panther替代PuPHPeteer。Panther是一个可以用来替代PuPHPeteer的工具,可以在Laravel项目中使用。你可以在以下链接中找到Panther的相关信息和文档: