Строгие стандарты: только переменные должны назначаться по ссылке PHP 5.4
Я обновляю версию MyPHP до 5.4 (Xampp 1.7.3 до 1.8.0). Теперь я вижу ошибку строгих стандартов, для myDBconnection
:
Строгие стандарты: только переменные должны назначаться по ссылке в C:\xampp\htdocs\alous\include\dbconn.php в строке 4
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-код.
Ответы
Ответ 1
Вы должны удалить символ &
(амперсанд), так что строка 4 будет выглядеть так:
$conn = ADONewConnection($config['db_type']);
Из руководство по php по присваиванию по ссылке:
Начиная с PHP 5, новый оператор автоматически возвращает ссылку, поэтому присвоение результата нового по ссылочным результатам в E_DEPRECATED сообщение в PHP 5.3 и более поздних версиях и сообщение E_STRICT в более ранних версиях версии.
Ответ 2
Это потому, что вы пытаетесь назначить объект по ссылке. Удалите амперсанд, и ваш script должен работать по назначению.
Ответ 3
У меня тоже была эта проблема.
Я не видел никаких изменений после изменения:
error_reporting = E_ALL
display_errors = Off
Закрыл мой браузер и остановился и запустил Apache в Xamp en. Сообщения об ошибках исчезли.