Хорошо, поэтому мой 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(); ?>
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