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

Docker中Debian:stretch执行./yii报错/usr/bin/env: 'php\r': 无此文件或目录

解决方法:修复脚本中的Windows换行符问题

这个问题我之前也碰到过!根源就是你的yii脚本里的换行符是Windows的CRLF格式(\r\n),而Linux系统只认LF(\n),所以第一行的#!/usr/bin/env php被解析成了#!/usr/bin/env php\r,系统自然找不到叫php\r的命令。下面给你几个靠谱的解决办法:

方法1:用dos2unix转换文件(最直观)

Debian默认没装这个工具,先安装:

apt-get update && apt-get install -y dos2unix

然后直接转换你的yii脚本:

dos2unix ./yii

转换完再运行./yii应该就正常了。

方法2:用sed命令直接替换(无需额外安装工具)

如果不想装新工具,用Linux自带的sed命令去掉每行末尾的\r字符:

sed -i 's/\r$//' ./yii

这个命令会遍历文件,把每行结尾的\r替换为空,相当于把CRLF转成LF。

方法3:检查Git换行符设置(如果代码来自Git仓库)

如果你的代码是从Windows环境提交的Git仓库拉过来的,可能Git自动把LF转换成了CRLF。可以在Linux容器里修改Git配置,禁止自动转换:

git config --global core.autocrlf false

之后重新拉取代码,或者用上面的方法转换已有的文件,避免以后再出现这个问题。

为什么用nano修改没用?

nano默认不会显示\r字符,而且默认保存时可能还是用原来的换行符格式。如果你想用nano修复,可以打开文件后,按Ctrl+O准备保存,然后按Alt+D切换换行符格式为Unix,再按回车保存,这样就能把CRLF转成LF了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:02:27