CakePHP蛋糕命令返回"没有这样的文件或目录"错误信息。

4

我在Linux服务器上使用cake命令已经有2年了。但现在我想迁移到新的服务器,一些问题出现了,cake命令返回错误:没有这个文件或目录。

即使我给出完整路径并将cake命令文件chmod 777,它仍然无法工作。


在问题中精确描述你正在做什么以及发生了什么(即复制并粘贴控制台输出)。 - AD7six
5个回答

8
我找到了解决办法:我只需要使用dos2unix程序来处理CakePHP 2.4.2的文件即可,因为在Ubuntu 13.10上下载时,该文件的结尾是错误的。我使用了以下命令:
sudo dos2unix /path/to/cake/lib/Cake/Console/cake

这似乎不太可能(而且你不需要使用sudo来运行它) - AD7six
我和一些来自cakePHP的开发者交谈过,他们之前见过其他人遇到过这个问题。是的,你可以不用sudo运行它,但我已经使用sudo安装了它。 - jurrieb
我的开发环境是Windows机器,当我将代码传递到Linux服务器时,需要运行dos2unix命令(并授予执行权限)来处理Console/cake文件。 - Reuben

4
我也在一些服务器上遇到了这个问题,但从未弄清为什么会发生。我怀疑所谓的“shebang”可能并没有针对每个Linux发行版正确设置(例如,如果蛋糕脚本以#!/usr/bin/env bash开头,但您的服务器上不使用bash或者您的发行版中该路径下没有env二进制文件,那么它可能会失败)。这只是一个理论,因为我从未真正解决过这个问题,也没有花太多时间去研究。
不过,我经常使用的备选方法就是直接调用cake.php脚本(位于app文件夹中),例如:
php Console/cake.php -app `pwd` bake

这是一个从未让我失望的命令。-app pwd 是告诉 shell 当前目录是应用程序目录,这样 shell 就可以找到你的所有文件。


我解决了这个问题,但还是谢谢你抽出时间来回答这个魔鬼般的问题 :-) - jurrieb
唯一真正有意义的答案 - Ricardo Vigatti

4
这个问题的真正解决办法是将行尾(EOL)字符更改为Unix格式,而不是MsDos格式。所以我猜如果你在Windows上工作,就会出现这个错误。
无论如何,正确的解决方法如下: (1) 使用任何允许更改EOL字符的文本编辑器(例如NotePad ++),打开app/Console/cake文件。 (2) 在NotePad++中单击: 编辑 -> EOL转换 -> 转换为Unix格式 (3) 保存文件并上传到服务器。现在,如果您使用类似以下命令导航到CakePHP应用程序目录:
cd /usr/share/nginx/html/cakeproject/app

如果一切顺利,你应该能够无障碍地运行Console/cake并查看标准输出(基本上是帮助命令)。

希望这能对你有所帮助!


1
这个操作非常顺利。对于使用Sublime的人,你可以进入文件 -> 以编码方式保存 -> UTF-8。 - Amjo
非常感谢,我已经在CakePHP应用程序上工作了2年,但从未遇到过这个问题。我曾经处理过繁重的CRON任务,但这是第一次,你的解决方案完美地解决了它。 - Abhishek Mugal

1
我也遇到了同样的问题,但是顶部答案提醒我之前遇到过类似的问题:https://dev59.com/x3E85IYBdhLWcg3wJQCt#5514351 基本上,你可以打开vim中的文件,而不是使用dos2unix或安装它。
:set fileformat=unix

并保存它。

-1
在某些版本中,可以使用“sudo apt-get install cakephp-scripts”安装蛋糕。
安装后,您只需键入“bake”,就可以在任何地方访问烘焙功能了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接