6

好的,所以我的 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\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

4 回答 4

10

global是一个应该单独使用的关键字。它不能与作业结合使用。所以,砍它:

global $x;
$x = 42;

此外,正如Zenham 所提到的,global在函数内部使用,以访问外部范围内的变量。因此,global按原样使用没有什么意义。

另一个提示(尽管它不会真正帮助您解决语法错误):将以下行添加到主文件的顶部,以帮助调试(文档):

error_reporting(E_ALL);
于 2009-07-17T22:39:09.077 回答
4

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

global $a;

...到函数的开始。

于 2009-07-17T22:37:22.997 回答
2

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

<?
ob_start();

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

并在使用它们的功能中(但您在此页面中没有任何功能)

function f() {
  global $siteRoot, $reportRoot;
  ...
}
于 2009-07-17T22:41:49.057 回答
0

您必须使用 global 没有赋值,只有一个变量。

由于您不运行,因此根本不需要 global 关键字:

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

如果您需要函数中的变量,只需添加:

global $siteRoot;
global $reportRoot
于 2009-07-17T22:47:26.953 回答