设置全局变量时出现PHP语法错误

设置全局变量时出现PHP语法错误,php,syntax,global-variables,Php,Syntax,Global Variables,好吧,至少可以说,我的PHP很可怕。我继承了一个应用程序,现在必须从7年前编写它的人那里修复其中的错误。当我运行页面时,没有返回,因此我检查了日志以查看错误,下面是我得到的结果: PHP分析错误:语法错误,意外的“=”,应为“,”或“;”在第4行的/httpdocs/cron123/purge.php中 代码如下: <? ob_start(); global $siteRoot = '/httpdocs/'; global $reportRoot = '/reports/

好吧,至少可以说,我的PHP很可怕。我继承了一个应用程序,现在必须从7年前编写它的人那里修复其中的错误。当我运行页面时,没有返回,因此我检查了日志以查看错误,下面是我得到的结果:

PHP分析错误:语法错误,意外的“=”,应为“,”或“;”在第4行的/httpdocs/cron123/purge.php中

代码如下:

<?
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(); 
?>

函数内部使用global关键字来声明它们将使用全局定义的变量,而不是定义一个。只需删除单词global,如果需要函数中的这些值,请添加:

global $a;
…到函数的开头。

是一个应该自己使用的关键字。它不能与作业相结合。所以,切掉它:

global $x;
$x = 42;
此外,如前所述,
global
用于函数内部,以访问外部范围中的变量。因此,使用所呈现的
global
没有什么意义

另一个技巧(尽管它不会真正帮助您处理语法错误):在主文件的顶部添加以下行,以帮助调试():

global
是一个修饰符,表示变量来自全局范围。应该是

<?
ob_start();

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

必须使用不带赋值的全局变量,只能使用变量

由于没有功能,因此根本不需要全局关键字:

$siteRoot        =       '/httpdocs/';
$reportRoot      =       '/reports/';
如果您需要函数中的变量,只需添加:

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