Синтаксическая ошибка PHP при установке глобальной переменной - PullRequest
3 голосов
/ 18 июля 2009

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

Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное '=', ожидаемое ',' или ';' в /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\t g: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('y.m.d_\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(); 
?>

Ответы [ 4 ]

7 голосов
/ 18 июля 2009

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

global $x;
$x = 42;

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

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

error_reporting(E_ALL);
2 голосов
/ 18 июля 2009

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

<?
ob_start();

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

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

function f() {
  global $siteRoot, $reportRoot;
  ...
}
2 голосов
/ 18 июля 2009

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

global $a;

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

0 голосов
/ 18 июля 2009

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

Поскольку вы не работаете, глобальное ключевое слово вообще не нужно:

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

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

global $siteRoot;
global $reportRoot
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...