2015-09-21 6 views
0

я получил открытый сценарий источника PHP, чтобы проверить скорость соединения, когда я переехал в другой сервер я получил эту ошибкуПредупреждение: Создание объекта по умолчанию из пустого значения в

Warning: Creating default object from empty value in /home/speed/public_html/common.php on line 26 

код, который генерирует эту ошибку, как следующим образом:

## Read through the config file and assign items to the global $config variable 
    function ReadConfig($config_file) { 
     global $config; 
     $lines = file($config_file); 
     foreach ($lines as $line_num => $line) { 
      $line = rtrim(preg_replace("/#.*/","",$line)); 
      if(preg_match("/\[.*\]/", $line, $parts)) { 
       $section = $parts[0]; 
       $section = preg_replace("/[\[\]]/","",$section); 
      } elseif (preg_match("/=/",$line)) { 
       list($var,$value) = split('=',$line); 
       $var = preg_replace('/ $/','',$var); 
       $value = preg_replace('/^ +/','',$value); 
       $config->{$section}->{$var} = $value; 
      } 
     } 
    } 

линия 26 эта линия

$config->{$section}->{$var} = $value; 

мне нужна ваша помощь, ребята, чтобы дать мне МОПВ т.й код для новых версий PHP я получил PHP v5.5

+0

Это не ошибка ** **, это * предупреждение *. Это просто говорит вам, что '$ config -> {$ section}' не существует, поэтому он создавал его для вас, когда вы делали '$ config -> {$ section} -> {$ var}'. Вы должны убедиться, что свойства существуют, прежде чем пытаться добавить к ним детей. –

ответ

2

Prefix строку 26 с этой проверкой:

if (!isset($config->{$section})) 
    $config->{$section} = new Stdclass; 

и он должен работать без генерации предупреждения

+0

спасибо sjon, я сделал то, что у сказал, что теперь instued из нескольких ошибок линии его одной строки, но все же такая же ошибка – Majid

+0

Вы показываете нам 1 ошибку; Я исправить это, теперь вы говорите нам, что ошибок больше? Как насчет их публикации? – Sjon

1

@Sjon дает ответ, чтобы избавиться от предупреждение, я просто объясню, почему вы видите предупреждение сейчас. Поскольку вы переместили свой код на другой сервер, скорее всего, есть еще один файл php ini и, следовательно, разные настройки. На вашем «старом» сервере у вас были, а warnings скорее всего отключены, поэтому вы их не видели, а на «новом» сервере они по умолчанию включены.

Вместо отображения ошибок, которые вы можете зарегистрировать их, так что вы не видите их во время просмотра:

display_errors(false); 
// you definitely wanna log any occurring 
log_errors(true); 
+0

hey Bas, я думаю, что при вводе ошибок в файл будет генерироваться огромный файл с течением времени, есть ли исправление к этому коду или какой-либо способ изменить настройку php, чтобы сделать это правильно? – Majid

+0

Он не станет soo большим, и каждый каталог получает свой собственный файл. Доступно множество опций конфигурации. Проверьте php.ini, чтобы получить обзор всех возможностей. –