Tags:

พอดีเริ่มมาหัดเขียน PHP ตอนนี้เริ่มหัดถึง PHP+MySQL แล้ว แต่พอเริ่มดัดแปลง ก็เลยงงครับ รบกวนช่วยหน่อย คือ
Web Server IP-address: 172.16.0.30
MySQL Server IP-address: 172.16.0.31

ทั้งหมดรัน Ubuntu 16.04 ครับ Web Server รัน NGINX ส่วน MySQL รัน Apache + PHPMyAdmin + MySQL ครับ

ประเด็นคือ อยากแยกระหว่าง Database Server กับ Web Server แต่พอเมื่อเขียนสคริปด้านล่างนี้แล้ว กลับขึ้นเป็น HTTP Error 500 ครับ เลยรบกวนขอคำแนะนำหน่อยครับ


<?php
$servername = "172.16.0.31";
$username = "test";
$password = "1234test";
$DBname = "TestDB";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$DBname, $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
?>

Get latest news from Blognone
By: mix5003
AndroidUbuntuWindows
on 17 December 2016 - 20:05 #959475

ได้ใช้ IDE ตัวไหนอยู่ไหมครับ ลองหามาช่วยดูครับ

ตรงบรรทัด $conn = new PDO... มันปิด " ไม่ครบครับ

By: iDan
ContributorAndroidSUSEUbuntu
on 19 December 2016 - 22:23 #959790 Reply to:959475

ใช้ IDE VB Code ครับ ตอนนี้ใช้แบบนี้ แล้วมันได้ครับ รู้สึกมึนๆ ไปเลย


<?php
$servername = "172.16.0.31";
$username = "test";
$password = "1234test";
$DBname = "TestDB";

try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
echo "Connected to $dbname at $host successfully.";
} catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());
}
?>

By: lancaster
Contributor
on 17 December 2016 - 23:56 #959492

ถ้า syntax error แล้ว 500 น่าจะรัน php-fpm ใช่มั้ยครับ

แนะนำให้เซ็ต php-fpm ให้ log error ลงไฟล์ (เซ็ตแถวๆ pool.d/xxx.conf) ทีนี้เวลามีปัญหาคราวหน้าเข้าไปคุยดูได้เลยครับมีบอกแน่นอน

By: iDan
ContributorAndroidSUSEUbuntu
on 19 December 2016 - 22:16 #959827 Reply to:959492

ขอบคุณครับ

By: rattananen
AndroidWindows
on 19 December 2016 - 09:27 #959694

ลองใช้ VS code เป็น editor อย่างน้อยเวลามัน syntax error เราจะได้รู้

By: osmiumwo1f
ContributorWindows PhoneWindows
on 19 December 2016 - 15:53 #959762 Reply to:959694
osmiumwo1f's picture

ถ้า syntax error ของ PHP มันจะบอกเลยว่าตรงไหนครับ ส่วน HTTP 500 มันเกิดจากหลายสาเหตุมาก และหลายๆ ครั้งเกิดจากหลายๆ สาเหตุรวมกันครับ

By: rattananen
AndroidWindows
on 19 December 2016 - 15:57 #959765 Reply to:959762

code ของเขามันมี syntax error ตาม reply แรกน่ะครับ

By: osmiumwo1f
ContributorWindows PhoneWindows
on 20 December 2016 - 10:26 #959895 Reply to:959765
osmiumwo1f's picture

ผมว่าไม่น่าจะเกี่ยวกับ double quote หายไปนะ เพราะในบล็อก try catch มันจะเข้า catch ทันทีที่มี error เกิดขึ้น แต่ไม่น่าจะถึงขั้น HTTP 500 internal server error ได้ เว้นแต่มันถูกตั้งค่าให้เกิดแบบนั้นครับ

By: mix5003
AndroidUbuntuWindows
on 20 December 2016 - 13:49 #959971 Reply to:959895

syntax error ใช้ try catch ช่วยไม่ได้ครับ

By: osmiumwo1f
ContributorWindows PhoneWindows
on 20 December 2016 - 13:58 #959977 Reply to:959971
osmiumwo1f's picture

ทำไมของผมมันทำ catch หว่า ทั้งๆ ที่ผมจงใจทำ syntax error ตามนั้นเลย แต่อ่านใน PHP.net แล้วก็ตามที่คุณว่าแหละครับ

By: nat3738
ContributorAndroidRed HatUbuntu
on 21 December 2016 - 19:04 #960314 Reply to:959977

ถึงมันได้ มันคงไม่เข้า PDOException มั้งครับ น่าจะเป็น exception อื่น

By: nat3738
ContributorAndroidRed HatUbuntu
on 21 December 2016 - 19:04 #960315 Reply to:959977

ถึงมันได้ มันคงไม่เข้า PDOException มั้งครับ น่าจะเป็น exception อื่น

By: rattananen
AndroidWindows
on 19 December 2016 - 16:02 #959769

ปล. แล้วเวลา dev ให้ set flag "display_errors" ของ php config เป็น on ครับ
จะได้หา error ง่ายๆหน่อย

By: จักรนันท์ on 19 December 2016 - 22:42 #959831

วิธีหา error ของทีมผมคือ ssh ไปที่ Server แล้วสั่ง

php ไฟล์.php

เอาเลยตรงๆ ครับ

By: joppoty on 2 April 2017 - 14:38 #978139
joppoty's picture

แหล่งความรู้ เก็บ ๆ