Команда Cakephp Cake не возвращает такой файл или каталог
Я использую команду cake на своем сервере Linux в течение 2 лет. но теперь я пытаюсь перейти на новый сервер, и вот как команда cake выдает ошибку: Нет такого файла или каталога
Даже если я дам полный путь к командному файлу cake chmod 777, он все равно не будет работать.
5 answers
Я нашел решение: все, что мне нужно было сделать, это использовать программу dos2unix файл cake для CakePHP 2.4.2 имеет неправильные окончания, когда вы загружаете его с Ubuntu 13.10
Я использовал следующую команду:
sudo dos2unix /path/to/cake/lib/Cake/Console/cake
РЕАЛЬНЫМ решением этой проблемы является изменение символов конца строки (EOL) в формат Unix вместо MsDos. Поэтому я предполагаю, что эта ошибка возникнет только в том случае, если вы работали в Windows.
В любом случае, могучий РЕШЕНИЕ:
(1) Откройте файл приложения/консоли/торта с помощью любого текстового редактора, который позволяет изменять символы EOL, например Notepad++.
(2) В блокноте++ нажмите: Редактирование -> Преобразование EOL ->Преобразование в формат Unix
(3) Сохранить файл и загрузить его на сервер. Теперь, если вы перейдете в каталог приложений CakePHP, используя команду типа:
cd /usr/share/nginx/html/cakeproject/app
...вы должны иметь возможность запускать Console/cake
без каких-либо проблем и видеть стандартный вывод (в основном команды справки).
Надеюсь, это помогло вам!
У меня также есть эта проблема на некоторых серверах, и я так и не понял, почему это произошло. Я подозреваю, что так называемый "shebang" может быть установлен неправильно для каждого дистрибутива Linux (например, если сценарий cake начинается с #!/usr/bin/env bash
, но вы не используете bash на своем сервере или в вашем дистрибутиве нет двоичного файла env в этом пути, это может привести к сбою. Это всего лишь теория, хотя, как я уже сказал, я никогда по-настоящему не понимал этого, и я не тратил много времени на расследование.
Хотя, что я всегда используйте в качестве запасного варианта просто вызов cake.php скрипт (из папки приложения) вместо этого, например:
php Console/cake.php -app `pwd` bake
Это никогда меня не подводит. Бит -app pwd
должен сообщить оболочке, что ваш текущий каталог является каталогом вашего приложения, чтобы оболочка могла найти все ваши файлы.
Я тоже столкнулся с той же проблемой, но верхний ответ напомнил мне о аналогичной проблеме, с которой я сталкивался раньше: https://stackoverflow.com/a/5514351/1097483
В принципе, вместо того, чтобы использовать dos2unix
или устанавливать его, вы можете открыть файл в vim, выполните
:set fileformat=unix
И сохраните его.
В некоторых версиях можно установить торт с помощью sudo apt-get install cakephp-scripts
.
После установки вы можете получить доступ к bake в любом месте, просто набрав bake