2017-01-25 7 views
0

を送ったのUbuntu 12.04 LTSにこのlinkで述べたように: -PHPの5.4は、ヘッダー情報を変更することはできません - ヘッダが既に最近私は、PHP 5.4にアップグレード

  1. sudo add-apt-repository ppa:ondrej/php5-oldstable
  2. sudo apt-get update
  3. sudo apt-get dist-upgrade

私のコードで何も変更されていません。しかし、今、私は以下のエラーを取得しています: -

E_WARNING Cannot modify header information - headers already sent by (output started at Abstract.php:588) in functions.php on line 55 

エラーがスローされ、関連するコードは: - this質問で述べたように

//Abstract.php 
public function outputBody() 
    { 
     $body = implode('', $this->_body); 
     echo $body; //Line 588 
    } 
... 

// functions.php 
if ($exit) { 
    if (strtolower(PHP_SAPI) != 'cli') {    
     header("HTTP/1.1 500 Internal Server Error"); //Line 55 
    } 
    echo Bob_Exception_Helper::printException($e, $logStr) . PHP_EOL; 
    exit (1); 
} 

私は両方/etc/php5/cli/php.ini/etc/php5/apache2/php.iniで以下の行を追加しました

output_buffering = On 

また、すべてがphp 5.3でうまくいきました。アップグレード後にコードの変更は行われませんでした。 Php 5.4へのアップグレード直後に、この問題が発生しました。

php --version 
PHP 5.4.45-4+deprecated+dontuse+deb.sury.org~precise+1 (cli) (built: Jun 24 2016 08:30:18) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies 
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans 

エラーを投げているPHPコード: -

public function outputBody() 
{ 
     $body = implode('', $this->_body); 
     echo $body; //As per the warning this line is throwing the error 
} 

しかし、まだ同じエラーを取得?何人かが私にこれを解決する方法を教えてもらえますか?

+2

これはあなたを助けてくれるかもしれません - [PHPでヘッダが既に送られているというエラーを修正する方法](http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in- php/8028987) – Tom

+0

ええ、私はその質問を終えました。私の質問を更新しました。 – tuk

+0

このエラーを生成するPHPコードがあります。通常は 'E_Warning'で参照されています。 – Tom

答えて

1

あなたのoutputBody()メソッドは、functions.phpファイルのコードよりも前に呼び出されています。

このエラーは、ifステートメントです。

if (strtolower(PHP_SAPI) != 'cli') {    
    header("HTTP/1.1 500 Internal Server Error"); //Line 55 
} 

PHP_SAPI定数は明らかにPHPをアップグレードしたときに値を変更しました。これは、header()メソッドをトリガーしますが、outputBody()Abstract.phpが既に実行されており、ヘッダーが設定されているページにエコーされています。送信したヘッダーをリセットできないため、header()メソッドが失敗します。

PHP_SAPIが変更された理由と変更点をご覧ください。これを修正すると、問題が解決するはずです。

0

すでに出力が発生しているときにヘッダー情報を変更することはできません。 (例えば、echo "xyz";または<?phpタグの前のスペースのみ)。 コードを表示すると、エラーが生成されます。エラーが発生した場所を正確に伝えることができます。

+0

質問が更新されました。 – tuk

関連する問題