2012-08-02 9 views
36

MyPHPのバージョンを5.4(Xampp 1.7.3から1.8.0)にアップグレードします。今私はmyDBconnectionため、厳しい基準エラーを参照してください。厳密な基準:参照のみで変数を割り当てる必要があります。5.4

厳しい基準 :変数のみがCで参照することによって割り当てる必要があります:\ xamppの\ htdocsに\ alousが\ 4

ライン上dbconn.php \含ま

dbconn.php:

<?php 
defined('_VALID') or die('Restricted Access!'); 

$conn = &ADONewConnection($config['db_type']); // <--- This Line 4 

if (!$conn->Connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name'])) { 
    echo 'Could not connect to mysql! Please check your database settings!'; 
    die(); 
} 
$conn->execute("SET NAMES 'utf8'"); 
?> 

注:私は厳格な基準を無効にする必要はありませんこの方法でphp.iniにerror_reporting = E_ALL & ~E_NOTICE & ~E_STRICT!私は私のPHPコードを修正したい。

+0

4行目を '$ conn = ADONewConnection($ config ['db_type']);に変更すると警告が消えますか? –

答えて

67

その線4は、このようになりますので、あなたは、&(アンパサンド)記号を削除する必要があります。

$conn = ADONewConnection($config['db_type']); 

php's manual on assignment by referenceから:PHP 5のよう

は、new演算子は、参照を返します自動的に、 は、PHP 5.3以降ではE_DEPRECATEDメッセージ を返し、それより前には バージョンのE_STRICTメッセージを返します。

+5

彼は' new'を使用していません。 – sam

+12

はい、このインスタンスでは '&'を削除しなければなりませんが、理由はgive(@samが示唆しているように)ではありません。代入の結果は_variable_ではなく、E_DEPRECATEDという警告ではなく、E_STRICTメッセージになります。これは 'new'演算子で起こるものです。実際には、 'ADONewConnection()' _function_が[参照を返す](http://www.php.net/manual/en/language.references.return.php)に設定されていると、 '=&'を使用して実際に有効になります)。 – MrWhite

8

これは、参照によってオブジェクトを割り当てようとしているためです。アンパサンドを削除すると、スクリプトは意図したとおりに動作するはずです。

-13

この問題もありました。

私が変更した後の任意の変化を見ていない:

error_reporting = E_ALL 

display_errors = Off 

は私のブラウザが閉じられ、エラーメッセージがなくなっていた途中XAMPではApacheを停止して起動。

+8

エラーを隠すことは解決策ではありません。 – kanenas

+0

エラーを隠すことは良い解決策ではありません。残念ながら、それは私が別のより良い解決策を時々見つけ出す必要がある "解決策"です。 –

関連する問題