如何解决:无法重新声明 spl_autoload_register()?

twe*_*ell 0 php php-7.3

我有一个需要移动的网站,但由于某些旧的 PHP 功能,它似乎不适用于 PHP7.3.12,并且这次不能选择旧的 5.x :(

首先我有一个错误:

已弃用:__autoload() 已弃用,在第 3 行的 /var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/autoload.php 中使用 spl_autoload_register() 代替

致命错误:未捕获错误:调用 /var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/core/libraries/sql.class/sql.class.php:2 中的未定义函数 sg_load() 堆栈跟踪: #0 /var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/autoload.php(83): require_once() #1 [内部函数]: __autoload('SQL') #2 /var/ www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/config.php(70): spl_autoload_call('SQL') #3 /var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/index.html php(14): include_once('/var/www/vhosts...') #4 {main} 被扔进 /var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/core/libraries/sql第 2 行的 .class/sql.class.php

我将第 3 行从__autoload($ClassName)改为spl_autoload_register($ClassName)

这给我带来了一个新错误:

致命错误:无法在第129行的/var/www/vhosts/dddd.eu/bbbgg.cdddd.eu/in_site/autoload.php 中重新声明 spl_autoload_register()

这是 autoload.php 的完整代码 - https://pastebin.com/1Qj3pFPH

什么会导致这个问题?

KIK*_*are 6

如果我只是查看您的代码,我会注意到您将其__autoload用作可调用的自动加载函数的名称。我不会使用该名称,因为它过去曾被使用过,并且如您所见,可能会触发弃用错误。您也不能替换它,spl_autoload_register因为这是一个现有的 PHP 函数。所以试试这个:

<?php

 function myAutoload($ClassName) 
 {
   .... code ....
 }

 spl_autoload_register('myAutoload');
Run Code Online (Sandbox Code Playgroud)

检查spl_autoload_register()的 PHP 手册也很有用。