Невозможно использовать «Объект» в качестве имени класса, так как он зарезервирован Cake 2.2.x

У меня проблема с попыткой настроить тестовую копию сайта, который у нас работает, у меня есть файлы и приложения, установленные на виртуальной машине Mint, и когда я указываю apache на каталог, я получаю ошибку 500 и следующее:

[Thu Oct 25 15:09:39.714201 2018] [php7:error] [pid 8945] [client 192.168.0.14:52237] PHP Fatal error:  Cannot use 'Object' as class name as it is reserved in /home/jamesmcgrath/Documents/dashboard/lib/Cake/Core/Object.php on line 30
[Thu Oct 25 15:09:39.714547 2018] [php7:error] [pid 8945] [client 192.168.0.14:52237] PHP Fatal error:  Uncaught Error: Class 'Controller' not found in /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ExceptionRenderer.php:174\nStack trace:\n#0 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ExceptionRenderer.php(92): ExceptionRenderer->_getController(Object(InternalErrorException))\n#1 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ErrorHandler.php(126): ExceptionRenderer->__construct(Object(InternalErrorException))\n#2 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ErrorHandler.php(284): ErrorHandler::handleException(Object(InternalErrorException))\n#3 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ErrorHandler.php(213): ErrorHandler::handleFatalError(64, 'Cannot use 'Obj...', '/home/jamesmcgr...', 30)\n#4 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Core/App.php(933): ErrorHandler::handleError(64, 'Cannot use 'Obj...', '/home/jamesmcgr...', 30, Array)\n#5 /home/jamesmcgrath/Documents/dashboard/lib/Cake/Core/App.php(906): App::_checkFatalError()\n#6 [internal function]: App::shutdow in /home/jamesmcgrath/Documents/dashboard/lib/Cake/Error/ExceptionRenderer.php on line 174

Странно то, что мы скопировали файлы прямо с веб-сервера, который работает правильно. Первая ошибка заставляет меня поверить, что это связано с тем, что версии php или apache различаются в зависимости от того, что я читал в другом месте (рабочий веб-сервер 7.1.10, а тестовый 7.2.10, я не могу определить, какая версия apache работает веб-сервер).

Я не уверен, связаны ли эти две ошибки, я все еще привыкаю к ​​этой среде, поэтому прогресс идет медленно, собирая этот материал.

Любая помощь вообще будет принята с благодарностью.


person James McGrath    schedule 25.10.2018    source источник
comment
Как указывает ошибка, Object является зарезервированным ключевым словом. Вы не можете использовать его для своего класса. Вы должны использовать другое имя для вашего класса. Просто измените имя класса на другое, чтобы устранить эту ошибку.   -  person Sehdev    schedule 25.10.2018
comment
Я столкнулся с первой ошибкой из-за неправильной версии php. Второй пока нет.   -  person Bryan Loresto    schedule 25.10.2018


Ответы (1)


Последняя ошибка вызвана проблемой, вызвавшей предыдущую ошибку, и предыдущая ошибка должна говорить сама за себя, имя Object зарезервировано и больше не может использоваться в качестве имени класса.

Object стало жестко зарезервированным именем в PHP 7.2 после мягко зарезервированного имени в PHP 7.0. Для правильной совместимости с PHP 7.2 обновите зависимость CakePHP как минимум до последней версии 2.10.x.

Если вы используете встроенное шифрование, вам также придется либо переключиться на OpenSSL (см. параметр конфигурации Security.useOpenSsl), либо, если шифрование, используемое вашим приложением, несовместимо, установить Mcrypt через PECL или использовать полифил, например phpseclib/mcrypt_compat.

Если вы не можете обновить CakePHP в данный момент, вам придется понизить версию установленного PHP до 7.1.x или более ранней версии.

Смотрите также

person ndm    schedule 25.10.2018
comment
Спасибо! Понижение версии PHP сработало, оказывается, версия PHP, на которой работает веб-сервер, отличалась от той, которую использовал apache (5.6.something), поэтому, как только мы вернулись к ней, все пошло нормально! - person James McGrath; 26.10.2018