关于 php:Composer install, 分段错误

Composer install, segmentation fault

我无法让 composer install 命令运行。我得到的只是一个分段错误的即时失败,php 问题?

  • 全新 MacBook Prop
  • 操作系统 - 莫哈韦 10.14.5
  • PHP - 7.3.7
  • Symfony - 4.6.0
  • PHP 是使用 brew 安装的,它是当前的稳定版本。
  • Symfony 是从他们的网站安装的,通过 curl 使用安装程序。
  • 我为该项目在本地下载的作曲家。

编译器安装的输出:

1
2
3
4
5
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file

Prefetching 96 packages e??μ e?’¨
  - Downloading (0%)[1]    4278 segmentation fault  composer install

composer -vvv install 的输出:

粘贴箱链接

我已经成功地在 Manjaro 和 Ubunutu 上运行它,运行 PHP 7.3.7。

最可靠的信息来源来自 github 上的这个问题,表明这是一个 PHP 问题,可能是版本/构建问题。我的项目依赖于 PHP 7.2^.

更新 - 用 brew install [email protected] 检查。同样的问题。

更新 2 - 找到了这个线程,尝试了解决方案,但没有运气

UPDATE 3 - 我用 --no-plugins 标志运行 composer install,它现在正在下载依赖项。在此之前我也运行过 clear-cache,我不确定他们是携手合作还是只是 --no-plugins。这表明我的一个默认安装的 PHP 插件会导致内存违规问题。哪一个?谁知道呢。

UPDATE 4 - 下载完成后仍然无法正常工作,我不得不再次运行 composer install 而没有 --no-plugin 标志。似乎工作正常。


我想我已经找到了解决办法。希望这可以帮助某人:

我用 --no-plugins 标志运行 composer install

下载完成后,我不得不再次运行没有 --no-plugins 标志的 composer install

编辑:在添加依赖项时发现其他问题之前,这很好而且很花哨!原来 curl 是问题所在。

解决,

1
2
brew remove curl-openssl --ignore-dependencies curl-openssl
brew install curl-ssl


在我的情况下,当我增加内存限制时问题就解决了。 php.ini 的限制设置为 256MB 但是,我发现 brew 安装的某些 ini 已覆盖该限制并强制将其设置为 128MB。

我将在下面列出我解决问题所遵循的路径。

Step 1 a€" 计算出实际的内存限制:

1
php -i | grep memory_limit

步骤 2 a€" 找到使用的 php.ini 文件路径:

1
php -i | grep"Loaded Configuration File"

步骤 1 中的 memory_limit 与我在步骤 2 中找到的文件中的 memory_limit 不匹配。

我进一步查看并发现 PHP 加载的以下配置文件,结果将 memory_limit 覆盖为 128MB:

/usr/local/etc/php/7.2/conf.d/php-memory-limits.ini

第 3 步 a€" 我禁用了它:

1
mv /usr/local/etc/php/7.2/conf.d/php-memory-limits.ini /usr/local/etc/php/7.2/conf.d/php-memory-limits.ini.bak

然后终于确认第1步返回了我设置的正确的memory_limit,也就是256MB。

希望对遇到同样问题的人有所帮助。

注意:您的安装路径可能会有所不同,我在此处放置了与我的情况相匹配的示例,但您应该明白这一点。


只需将 PHP 版本从 php 7.3 更改为 7.4
现在它为我工作


我使用 composer 2.x 并导致此问题
我的同事通过以下方式帮助我解决了这个问题:

作曲家自我更新--1

然后

作曲家更新
或者
作曲家转储自动加载

如果你想让 composer 回到 2.x:

作曲家自我更新--rollback


在 php.ini 中禁用 xdebug 扩展并启用文件 opcache(opcache.enable_cli = 1opcache.file_cache 设置为本地目录)后,我遇到了这个问题。似乎在禁用 xdebug 时必须删除这些 opcache 文件,否则任何缓存 php 文件的执行都会导致分段错误(这是 PHP 7.4.10)。