cakephp 不能使用'Object作为类名,因为它是Cake 2.2.x的保留名称

u5i3ibmn  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(154)

我遇到了一个问题,试图设置一个测试副本的网站,我们已经运行,我有文件和应用程序安装在一个薄荷虚拟机,当我指向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

奇怪的是,我们直接从运行正常的Web服务器上抓取了文件。第一个错误让我相信这是由于PHP或Apache版本不同,根据我在其他地方读到的(工作的Web服务器是7.1.10,测试的是7.2.10,我不能确定Web服务器运行的是什么版本的Apache)。
我不确定这两个错误是否相关,我还在适应这种环境,所以学习这些东西的进度很慢。
任何帮助都将不胜感激。

2w3kk1z5

2w3kk1z51#

后一个错误是由导致前一个错误的问题引起的,前一个错误应该是相当自解释的,名称Object是保留的,不能再用作类名。
Object在PHP 7.2中已经成为一个硬保留名称,而在PHP 7.0中则是一个软保留名称。要获得正确的PHP 7.2兼容性,请将CakePHP依赖项升级到最新的2.10.x版本。
如果您使用的是内置加密,您还必须切换到OpenSSL(请参阅Security.useOpenSsl配置选项),或者如果您的应用使用的加密不兼容,请通过PECL安装Mcrypt,或者使用phpseclib/mcrypt_compat之类的polyfill。
如果您现在无法升级CakePHP,那么您必须将PHP安装降级到7.1.x或更早版本。
另请参阅




*PHP手册〉附录〉从PHP 7.1.x迁移到PHP 7.2.x〉向后不兼容更改〉类名对象
*PHP手册〉附录〉从PHP 7.1.x迁移到PHP 7.2.x〉其他更改〉将MCrypt迁移到PECL

相关问题