Ошибка синтаксиса PHP в настройке глобальной переменной

Хорошо, поэтому мой PHP, мягко говоря, ужасен. Я унаследовал приложение, и мне приходится исправлять ошибки в нем от кого-то, написавшего его более 7 лет назад. Когда я запускаю страницу, возврата нет, поэтому я проверил журналы, чтобы увидеть ошибку, и вот что я получаю:

Ошибка PHP Parse: синтаксическая ошибка, неожиданные '=', ожидающие ',' или ';' в /httpdocs/cron123/purge.php в строке 4

Вот код:

<? ob_start(); global $siteRoot = '/httpdocs/'; global $reportRoot = '/reports/'; include('billing1.php'); $date='Purge report for: ' .date('M d, Y \a\tg:i a'); ?> <html> <head><title><?=$date?></title></head> <body> <?php $account = new billing(); $ftresult = $account->purge(); new dBug($ftresult); echo "successfully wrote"; ?> </body> <? $filename = "purge_report_" . date('ymd_\a\t_g_i_a') . ".html"; $loc = $reportRoot . 'purge_reports/'; $f = $loc . $filename; $fp = @fopen($f, 'w'); @fwrite($fp, ob_get_contents()); @fclose($fp); ob_end_flush(); ?> 

Related of "Ошибка синтаксиса PHP в настройке глобальной переменной"

global – это ключевое слово, которое должно использоваться само по себе. Он не должен сочетаться с назначением. Итак, нарежьте это:

 global $x; $x = 42; 

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

Еще один совет (хотя это не поможет вам с синтаксическими ошибками): добавьте следующую строку в верхнюю часть основного файла, чтобы помочь отладку ( документацию ):

 error_reporting(E_ALL); 

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

 global $a; 

… к началу функции.

См. Здесь . global – это модификатор, который означает, что переменная поступает из глобальной области. Это должно быть просто

 <? ob_start(); $siteRoot = '/httpdocs/'; $reportRoot = '/reports/'; 

и в функциях, которые их используют (но у вас их нет на этой странице)

 function f() { global $siteRoot, $reportRoot; ... } 

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

Поскольку вы не выполняете функции, ключевое слово global не нужно:

 $siteRoot = '/httpdocs/'; $reportRoot = '/reports/'; 

Если вам нужны переменные в функции, просто добавьте:

 global $siteRoot; global $reportRoot