У меня есть приложение CakePHP, работающее на общем хосте, который недавно обновил меня до PHP 5.4.x. По большей части, все прошло гладко, но теперь мои снаряды не будут работать:Проблема с CakePHP Console после обновления до PHP 5.4
CakePHP Console: This file has been loaded incorrectly and cannot continue.Please make sure that /cake/console is in your system path,and check the manual for the correct usage of this command.
Порывшись в cake/console/cake.php
, оказывается, что отказ происходит в этом блоке:
if (!isset($this->args[0]) || !isset($this->params['working'])) {
# debug($this->args);
# debug(isset($this->args[0]));
$this->stderr("\nCakePHP Console: ");
$this->stderr('This file has been loaded incorrectly and cannot continue.');
$this->stderr('Please make sure that ' . DIRECTORY_SEPARATOR . 'cake' . DIRECTORY_SEPARATOR . 'console is in your system path,');
$this->stderr('and check the manual for the correct usage of this command.');
$this->stderr('(http://manual.cakephp.org/)');
$this->_stop();
}
В частности, $this->args
массив пуст, поэтому нет 0
индекс. Это приложение запускает CakePHP 1.3.17. Я проверил другое приложение под управлением 1.3.16, и оба сценария cake
и файлы cake.php
- это то же самое. Однако на сайте 1.3.16 значение $this->args[0]
правильно установлено на путь вызываемого сценария.
Любая идея, почему мой недавно обновленный сайт не получит такое же значение? Это приложение, которое не было затронуто в течение нескольких месяцев. Насколько я знаю и могу сказать, единственным изменением было обновление PHP.
Любое понимание было бы высоко оценено.
У нас были проблемы, обновляющиеся в прошлом PHP 5.3 при использовании Cake 1.3 - если у вас есть ** ** обновить PHP мимо этой точки, вы, возможно, придется обновить ядро торт, а также (и все устаревшие функции и функции, не поддерживающие обратную совместимость, которые впоследствии возвращают разные структуры). –