2009-07-17 19 views
3

これで、私のPHPは恐ろしいほどです。私はアプリケーションを継承し、7年以上前にそれを書いた人からエラーを修正する必要があります。私は、ページを実行すると、ノーリターンはありませんので、私は、エラーを確認するためにログをチェックし、ここに私が得るものです:グローバル変数の設定で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(); 
?> 

答えて

7

globalは、単独で使用する必要があるキーワードです。割り当てと組み合わせてはいけません。だから、それをチョップ:また

global $x; 
$x = 42; 

を、Zenhamが言及として、globalは外側のスコープ内の変数にアクセスするために、関数の内部で使用されています。したがって、提示されているようにglobalの使用はほとんど意味がありません。

もう一つのヒント

は、(それが実際に構文エラーであなたを助けにはなりませんが):( documentation)のデバッグを支援するために、メインファイルの先頭に次の行を追加します

error_reporting(E_ALL); 
2

グローバル:ここ

PHP Parse error: syntax error, unexpected '=', expecting ',' or ';' in /httpdocs/cron123/purge.php on line 4

コードですキーワードは関数の内部で使用され、変数を定義するのではなく、グローバルに定義された変数を使用することを宣言します。言葉だけグローバルを削除し、あなたが関数内でこれらの値が必要な場合は、追加:

global $a; 

を...機能を開始します。

2

hereを参照してください。 globalは、変数がグローバルスコープから来ることを意味する修飾語です。

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

あなたは、割り当てなしでのみ変数をグローバル使用する必要があります。それはちょうど

<? 
ob_start(); 

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

し、それらを使用する関数にする必要があります(ただし、このページでいずれかを持っていません)。

あなたは機能をしない限り、グローバルキーワードの必要は全くありません。

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

あなたが関数内の変数が必要な場合だけ追加します。

global $siteRoot; 
global $reportRoot