Я пытаюсь обновить свой веб-сайт до новейшей или, по крайней мере, новой версии 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();
}
@rjdown Я делал это раньше, и я сделал это снова, когда появилось реальное исправление. Это было убрать ob_start()
потому что заголовки не были отправлены в правильном порядке. Это исправило эту страницу.
Теперь я все еще получаю Внутреннюю ошибку сервера где-то еще. Другая ошибка сейчас. Вовлечение ошибки glibc, характерной для моего сервера и выходящей за рамки этого конкретного вопроса.
Других решений пока нет …