Symfony - Composer 更新 - 需要使用旧的依赖项(PHP 5.4 到 PHP 5.3)

Posted

技术标签:

【中文标题】Symfony - Composer 更新 - 需要使用旧的依赖项(PHP 5.4 到 PHP 5.3)【英文标题】:Symfony - Composer update - need to user older dependencies (PHP 5.4 to PHP 5.3) 【发布时间】:2016-05-29 00:00:22 【问题描述】:

基本上我有一个问题——我们有一个基于 php 5.4 构建的 Symfony 站点,但我们的服务器运行的是 PHP 5.3(是的——它很旧,上面有 200 多个站点,所以我不想升级以防它变旧网站!)

我们知道问题在于 Doctrine(速记数组语法) - 可以手动更新文件并使用较旧的数组语法。

但我应该可以通过 Composer 完成 - 但我不确定要使用哪个命令。

我知道这可能会非常简单。我想我会先问一下,因为如果出现问题,我可能会节省恢复备份的时间!

更新:

试过composer install

问题 1 - 学说/orm v2.5.0 需要 php >=5.4 -> 您的 PHP 版本 (5.3.28) 不满足该要求。 - 学说/orm v2.5.0 需要 php >=5.4 -> 您的 PHP 版本 (5.3.28) 不满足该要求。 - 对教条/orm v2.5.0 的安装请求 -> 可满足于教条/orm[v2.5.0]。

试过composer install --ignore-platform-reqs

无需安装或更新

试过composer update

致命错误:第 51 行 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Rule.php 中允许的内存大小为 335544320 字节已用尽(尝试分配 64 字节)

没想到会有这样的响应 - 可能是服务器配置问题。可惜它看起来确实在做某事!

【问题讨论】:

命令是什么意思?只需打开您的 composer.json 并将所需的 php 版本更改为 5.3... 的东西。您只需检查所有必需的捆绑软件是否支持这些版本。即学说 Bundle 需要 "php": ">=5.3.9", 好的 - 所以只要运行 composer update 就会降级该学说以在 5.3 上运行。目前 composer 中的行是 "php": ">=5.3.3", 问题是其他有 php 要求的依赖项,这就是为什么 ignore-platform-reqs 应该工作! 我要做的是在 5.3 下创建一个新的 Symfony 项目: composer create-project symfony/framework-standard-edition my_project "2.7.*" 然后使用生成的 composer.json 作为我的开始观点。当然,将您的开发机器设置回 5.3。 【参考方案1】:

使用--ignore-platform-reqs 对你没有帮助,它会让事情变得更糟。正如我从您的问题中得出的那样,您的开发中有一个旧的 5.4 PHP,而您的生产机器上有一个更旧的 5.3。

我看到的任务是如何使用开发 PHP 更新生产 PHP 的依赖项。

幸运的是,如果 Composer 当前正在运行它,您可以告诉 Composer 假设使用不同版本的 PHP。

您可以为在特定机器上执行的任何 Composer 调用全局配置它,也可以为单个项目配置它。您的决定取决于您希望使用开发机器做什么,即是否必须支持另一个具有不同要求的项目。

composer config -g platform.php 5.3.16 将是全局配置,而本地配置将省略 -g

全局配置的效果是 Composer 将创建或添加到文件~/.composer/config.json 一个带有确切 PHP 版本号的部分。请务必使用完全正确的版本! PHP 5.3 在其生命周期中有一些重要的错误修复,补丁级别很重要,因为以后的 PHP 版本不需要 PHP 代码中的某些变通方法。您应该避免在没有解决方法的情况下在仍然损坏的版本上运行软件。

在本地版本中运行该命令会将假设的 PHP 版本添加到项目composer.json 文件中。

添加平台后,您只需运行composer update,就会看到正在安装的与给定 PHP 5.3 版本兼容的软件包。

在生产部署期间,您只需运行composer install --no-dev,无需任何额外工作。

【讨论】:

感谢您的意见 - 我会调查这个 +1 ;)【参考方案2】:

在大多数服务器环境中,应该可以一次安装多个 PHP 版本,并且仅将特定版本用于特定文件夹/站点(例如,通过 htaccess 激活它)。因此,您的 200 个站点可以使用旧版本作为标准,而您的新站点可以使用新的 PHP 版本。我也在我的一台服务器上这样做了,这对我来说是一个很好的解决方案,我不必一次升级所有代码。

稍后当所有站点都更新时(由于缺少旧 PHP 版本的安全更新,您需要更新它们的时候)然后您可以将较新版本设置为默认 PHP 版本并忽略旧版本。

【讨论】:

以上是关于Symfony - Composer 更新 - 需要使用旧的依赖项(PHP 5.4 到 PHP 5.3)的主要内容,如果未能解决你的问题,请参考以下文章

在Composer更新后找不到Symfony AbstractController

Symfony - Composer 更新 - 需要使用旧的依赖项(PHP 5.4 到 PHP 5.3)

安装 symfony2 cmf composer 问题

如何使用 Composer 和 Symfony 解决错误 255 [关闭]

无法更新 symfony 食谱

保持 composer.json 更新和维护