Почему Ошибка PHP: Звоните в функцию членства set_prefix () на необъекте

Я получил эту ошибку

Фатальная ошибка: Звоните в функцию членства set_prefix () на необъекте в/home/reboltutorial/reboltutorial.com/wp-settings.php на строке 254

строка 254 содержит:

$prefix = $wpdb->set_prefix($table_prefix); // set up global tables

Это происходит, если я пытаюсь назвать index_wordpress () вместо того, чтобы назвать эти две строки

    define('WP_USE_THEMES', true);  
    require('./wp-blog-header.php');  

таким образом, это не работает:

<?php

    function index_wordpress() {
        define('WP_USE_THEMES', true);  
        require('./wp-blog-header.php');  
    }
?>    

<?php

    if(!function_exists('apache_request_headers')) {
        function apache_request_headers() {
            $headers = array();
            foreach($_SERVER as $key => $value) {
                if(substr($key, 0, 5) == 'HTTP_') {
                    $headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
                }
            }
            return $headers;
        }
    }

    function getCurrentPageUrl() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }    

    $a =  apache_request_headers();

    $pos = strrpos($a["User-Agent"], "REBOL");
    if ($pos === false) {
        index_wordpress();
    } else {

      if ($_SERVER['REMOTE_ADDR'] != "69.163.203.14") {
        $command= './cgi-bin/index.cgi '. '"' . getCurrentPageUrl() . '"';
        echo system($command);
      } else {
        index_wordpress(); 
      }
    }
?>

в то время как это работает:

<?php

    if(!function_exists('apache_request_headers')) {
        function apache_request_headers() {
            $headers = array();
            foreach($_SERVER as $key => $value) {
                if(substr($key, 0, 5) == 'HTTP_') {
                    $headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
                }
            }
            return $headers;
        }
    }

    function getCurrentPageUrl() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }    

    $a =  apache_request_headers();

    $pos = strrpos($a["User-Agent"], "REBOL");
    if ($pos === false) {
        define('WP_USE_THEMES', true);  
        require('./wp-blog-header.php');
    } else {

      if ($_SERVER['REMOTE_ADDR'] != "69.163.203.14") {
        $command= './cgi-bin/index.cgi '. '"' . getCurrentPageUrl() . '"';
        echo system($command);
      } else {
        define('WP_USE_THEMES', true);  
        require('./wp-blog-header.php'); 
      }
    }
?>
1
задан Rebol Tutorial 29 May 2010 в 20:03
поделиться

1 ответ

Вы переместили включение, которое инициализирует Wordpress в функцию, тем самым ограничивая все переменные, создаваемые процедурой инициализации, областью действия этой функции, теряя их при завершении функции.

Хотя это должно решить вашу непосредственную проблему:

 function index_wordpress() {
        global $wpdb;  // Changes scope    
        define('WP_USE_THEMES', true);  
        require('./wp-blog-header.php');  
    }

, вероятно, лучше оставить require в основном скрипте.

2
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: