You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下Sylius预配置Docker项目启动失败:PHP路径报错

问题

在Windows11主机上运行预配置Docker的Sylius项目,本地执行composer install和yarn install均正常,但执行docker compose时出现启动失败报错,关键错误片段如下:

=> ERROR [myproject-php sylius_php_prod 19/21] RUN set -eux;     mkdir -p var/cache var/log;     composer dump-a  12.7s 
------
 > [myproject-php sylius_php_prod 19/21] RUN set -eux;     mkdir -p var/cache var/log;     composer dump-autoload --classmap-authoritative;     APP_SECRET='' composer run-script post-install-cmd;     chmod +x bin/console; sync;     bin/console sylius:install:assets --no-interaction;     bin/console sylius:theme:assets:install public --no-interaction:
#0 12.64 + bin/console sylius:install:assets --no-interaction
': No such file or directory'php
------
failed to solve: executor failed running [...] : exit code: 127
`docker-compose` process finished with exit code 17

主机已手动创建var/cache和var/log目录,但容器仍无法启动,需要排查PHP路径相关报错的原因。

解决方案

这个报错的核心原因是Windows系统的CRLF换行符与Linux容器的LF换行符不兼容,具体修复步骤如下:

  • 错误根源:项目中的bin/console文件首行#!/usr/bin/env php使用了Windows的CRLF换行符(行尾带\r\n),在Linux容器内执行时,Shell会将#!/usr/bin/env php\r识别为完整的命令路径,导致找不到名为php\r的可执行文件,从而抛出路径不存在的错误。
  • 修复操作:
    1. 修正bin/console的换行符:
      • 在代码编辑器(如VS Code)中打开该文件,将右下角的换行符设置从CRLF切换为LF,保存文件;
      • 或通过Git全局配置强制转换换行符:执行git config core.autocrlf input,重新同步项目文件;
    2. 清理Docker缓存后重新构建:
      • 执行命令docker compose build --no-cache myproject-php,避免复用之前缓存的错误文件;
    3. 删除主机上手动创建的var/cache和var/log目录:Dockerfile中已包含创建这两个目录的指令,主机创建的目录可能因权限或挂载冲突引发问题,由容器自行创建即可。

内容的提问来源于stack exchange,提问作者miltone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:45:56