AWS не загружает веб-страницу PHP везде, где я пытаюсь подключиться к базе данных

#php #mysql #sql #amazon-web-services #mariadb

#php #mysql #sql #amazon-веб-сервисы #мариадб

Вопрос:

Я новичок в AWS и пытался развернуть свое веб-приложение, но продолжаю получать 504 Gate-way Timeout . Однако после небольшой отладки и повторного развертывания я заметил, что это было вызвано сегментом PHP моего index.php файл:

 lt;?php  $dsn = 'mysql:host=lt;AWS database hostnamegt;; dbname=e-flash-card-schema';  $username = 'lt;usernamegt;';  $password = 'lt;passwordgt;';   $db = new PDO($dsn, $username, $password);   session_start();  $user = @$_SESSION['Username'];  $card_number = @$_SESSION['Card_number'];   $query1 = "SELECT Front_Text FROM `e-flash-card-schema`.`card_text` WHERE Username = '$user' AND Card_Number = '$card_number'";  $statement1 = $db-gt;prepare($query1);  $statement1-gt;execute();  $front_text = $statement1-gt;fetch();  $statement1-gt;closeCursor();   $query2 = "SELECT Back_Text FROM `e-flash-card-schema`.`card_text` WHERE Username = '$user' AND Card_Number = '$card_number'";  $statement2 = $db-gt;prepare($query2);  $statement2-gt;execute();  $back_text = $statement2-gt;fetch();  $statement2-gt;closeCursor(); ?gt;  

В частности, когда я удалил все перед session_start(); строкой, веб-страница смогла загрузиться, хотя это было с ошибками, которые, как я предполагаю, были вызваны строками $query1 = ... и ниже. Это навело меня на мысль, что произошла какая-то ошибка, вызванная моей попыткой подключиться к базе данных

Когда я запускаю один и тот же код с помощью XAMPP, подключаясь к одному и тому же серверу баз данных AWS на своем компьютере, все работает нормально. Кто-нибудь знает, что может быть причиной этого?

Я также использую движок MariaDB для базы данных AWS и Elastic Beanstalk для развертывания своего веб-приложения, если это поможет.

Редактировать: Если кто-то рассматривает этот вопрос, может ли это быть связано с тем, что он не может справиться с такого рода вещами?

Комментарии:

1. @KenLee Я только что попробовал это, но результат все тот же

2. @KenLee Он говорит, что успешно подключен, когда я запускаю на своем компьютере, но выдает еще одну ошибку в моем коде: Fatal error: Uncaught Error: Call to a member function execute() on bool in C:xampphtdocsE-FlashCardE-Flash cards projectindex.php:26 Stack trace: #0 {main} thrown in C:xampphtdocsE-FlashCardE-Flash cards projectindex.php on line 26 я предполагаю, потому $statement1-gt;execute(); что не работает с mysqli?

3. @KenLee Я снова перешел на использование PDO, и он отлично работает на моей машине. Connected Succesfully

4. Значит, все улажено ?

5. @KenLee Не совсем, на моей машине это всегда нормально работало, но когда я пытаюсь развернуть в AWS, я все равно получаю 504 Gate-way Timeout

Ответ №1:

Наконец мне удалось заставить его работать, создав снимок исходной базы данных AWS RDB и настроив свою базу данных elastic beanstalk с помощью этого снимка. Затем я подключился к этой базе данных вместо этого, используя имя хоста базы данных elastic beanstalk в моем PHP-коде, где было исходное имя хоста RDB.

Таким образом, я не смог подключиться к внешней базе данных, поэтому я скопировал эту базу данных в свою конфигурацию elastic beanstalk и использовал ее вместо этого.

Надеюсь, это поможет любому, у кого может возникнуть та же проблема