mysql — внутренняя ошибка сервера на PDO :: execute (array ()) на PHP 5.4.11

Я пытаюсь обновить свой веб-сайт до новейшей или, по крайней мере, новой версии PHP. Через мой сайт я получаю сообщения об ошибках внутреннего сервера. Некоторые согласуются и возникают каждый раз, когда вы заходите на страницу. Другие с перебоями, хотя те же действия были предприняты. Я пытаюсь решить хотя бы одну из ошибок в надежде закрепиться в решении всего остального.

Код, который последовательно выдает внутреннюю ошибку сервера:

try {
global $dbCon;
$stmt = $dbCon->prepare("SELECT pdf_template, ai_template, id_template, img_template FROM products WHERE sku=:s ");
$stmt->execute(array(':s' => $sku));            //Failure occurs on this line
$result = $stmt->fetch(PDO::FETCH_ASSOC);      //This is never reached

//$stmt->bindValue(':sku',$sku,PDO::PARAM_STR);//Attempted alternate form of binding
//$stmt->execute();                            //Alternate binding still failed here

} catch (PDOException $e) {
$logger->warn("Database call failed, was unable to gather product templates", "pricing modal", "sku: $sku");
}

Как вы можете видеть из моего комментария, строка $stmt->execute(array(':s' => $sku)); последовательно виновник. Если это закомментировано, страница все еще загружается. Более конкретно, если я поставлю $stmt->execute(); инструкция выполняется, и страница все еще загружается (минус БД, разумеется, необходимый контент). Таким образом, кажется, что во время попытки PHP связать переменные с подготовленным оператором произошел сбой. Это также относится к bindValue(), Каждый раз, когда значение связано ранее, выполнить не удается.

Я пробовал много способов получить какой-то тип вывода в журналах. Например, вверху страницы

error_reporting(E_ALL);
ini_set( 'display_errors','1');
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );

В .htaccess:

php_flag  log_errors on
php_value error_log  /tmp/php-error.log

Я пробовал различные перестановки предыдущего кода, пытаясь вызвать ошибку в файле журнала. Да, что-то излишнее, я отчаянно нуждался в ответе. Да, «Здравствуйте, ошибки!» Действительно появляется в файле журнала.

Причина всего этого: Сайт прекрасно работает на PHP 5.3. Это версия, в которой она была разработана. (Я знаю, она должна была быть разработана на более новой версии. У меня есть логистические причины, которые ранее были вне моего контроля). Когда я поднимаю версию до 5.4 или 5.5, я получаю внутреннюю ошибку сервера. , Может ли кто-то предоставить некоторое понимание и более глубокие знания по этой теме. Большое спасибо.

РЕДАКТИРОВАТЬ: $ dbCon декларация:

try{
$dbCon = new PDO('mysql:host=mysql.example.com;dbname=db_sandbox',$db_user,$db_password, array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
} catch( PDOException $e ) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

1

Решение

@rjdown Я делал это раньше, и я сделал это снова, когда появилось реальное исправление. Это было убрать ob_start() потому что заголовки не были отправлены в правильном порядке. Это исправило эту страницу.

Теперь я все еще получаю Внутреннюю ошибку сервера где-то еще. Другая ошибка сейчас. Вовлечение ошибки glibc, характерной для моего сервера и выходящей за рамки этого конкретного вопроса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]