Penyebab dan solusi HTTP ERROR 500


Halaman ini tidak berfungsi
localhost saat ini tidak dapat menangani permintaan ini.
HTTP ERROR 500

Untuk kasus seperti ini Penyebabnya apa ya gan? pesan eror tersebut hanya muncul sekali saja pada awal membuka halaman yg diminta, setelah di reload halaman kembali berfungsi dengan baik sampai waktu beberapa menit kedepan, kemudian setelah beberapa menit pesan tsb muncul lagi... di reload lagi, dan berfungsi lagi.. begitu seterusnya.

Mungkinkah kesalahan ini terjadi karna penulisan scrip yang kurang tepat? Jika demikian kenapa setelah di reload halamannya berfungsi dengan baik.? Terimakasih

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Diperbarui 6 tahun yang lalu

9 Jawaban:

sudah coba clear cache gan?

avatar chaidiryahya
@chaidiryahya

139 Kontribusi 99 Poin

Dipost 6 tahun yang lalu

@chaidiryahya Sudah gan, masih tetep sama. Di folder logs, saya menemukan informasi error php seperti ini :

 Stack trace:
#0 C:\MAMP\htdocs\sobat\classes\Forum.php(20): Database->get_info('forum INNER JOI...')
#1 C:\MAMP\htdocs\sobat\forum\index.php(9): Forum->get_topik()
#2 {main}
  thrown in C:\MAMP\htdocs\sobat\classes\Database.php on line 74

[05-Jan-2018 02:22:40 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:26:34 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:27:30 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:27:31 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:27:34 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:27:35 UTC] PHP Warning:  mysqli::__construct(): Headers and client library minor version mismatch. Headers:50541 Library:50634 in C:\MAMP\htdocs\sobat\classes\Database.php on line 14

[05-Jan-2018 02:27:36 UTC] PHP Warning:  mysqli::query(): (HY000/6): Error on delete of 'C:\Users\Supriono\AppData\Local\Temp\#sql1008_3f_0.MYD' (Errcode: 13 - Permission denied) in C:\MAMP\htdocs\sobat\classes\Database.php on line 72

[05-Jan-2018 02:27:36 UTC] PHP Fatal error:  Uncaught Error: Call to a member function fetch_assoc() on boolean in C:\MAMP\htdocs\sobat\classes\Database.php:74
Stack trace:
#0 C:\MAMP\htdocs\sobat\classes\Forum.php(20): Database->get_info('forum INNER JOI...')
#1 C:\MAMP\htdocs\sobat\forum\index.php(9): Forum->get_topik()
#2 {main}
  thrown in C:\MAMP\htdocs\sobat\classes\Database.php on line 74
avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

coba kirim yg di Database.php gan. Jangan lupa tandain yang mana line 74 nya gan ya.

avatar chaidiryahya
@chaidiryahya

139 Kontribusi 99 Poin

Dipost 6 tahun yang lalu

Line 74 ada di fungsi get_info


<?php

class Database{

  private static $INSTANCE = null;
  private $mysqli,
          $HOST = 'localhost',
          $USER = 'root',
          $PASS = 'root',
          $DBNAME = 'agen-rahasia';

  public function __construct()
  {
    $this->mysqli = new mysqli( $this->HOST, $this->USER, $this->PASS, $this->DBNAME );
    if( mysqli_connect_error() ){
      die('gagal koneksi');
    }
  }

   /*
    singleton pattern,
    menguji koneksi agar tidak double
  */
  public static function getInstance()
  {
    if( !isset( self::$INSTANCE ) ){
      self::$INSTANCE = new Database();
    }

    return self::$INSTANCE;
  }

  public function insert($table, $fields = array())
  {
		/*mengambil kolom*/
		$column = implode(", ", array_keys($fields));

		/*mengambil niai*/
		$valueArrays = array();
		$i = 0;
		foreach($fields as $key=>$values){
			if( is_int($values) ){
				$valueArrays[$i] = $this->escape($values) ;
			} else{
			$valueArrays[$i] = "'" . $this->escape($values) . "'";
			}

			$i++;
		}

		$values = implode(", ", $valueArrays);

	  $query = "INSERT INTO $table ($column) VALUES ($values)";

	  return $this->run_query($query, 'oopss ada kesalahan bro!');
  }

  public function get_info($table, $column = '', $value = '')
  {
    if( !is_int($value) )
      $value = "'". $value . "'";

      if( $column != '' ) {
        $query  = "SELECT * FROM $table WHERE $column = $value";
        $result = $this->mysqli->query($query);

        while($row = $result->fetch_assoc()){
           return $row;
        }
      }else{
        $query  = "SELECT * FROM $table";
        $result = $this->mysqli->query($query);

        while($row = $result->fetch_assoc()){ //LINE 74
           $results[] = $row;
        }

        return $results;
      }
  }


  public function update($table, $fields,  $id)
  {
      //mengambil nilai
      $valueArrays = array();
      $i = 0;

      foreach($fields as $key=>$values){
        if( is_int($values) ){
          $valueArrays[$i] = $key . "=" . $this->escape($values);
        }else{
          $valueArrays[$i] =  $key . "='" . $this->escape($values) . "'";
        }

        $i++;
      }
      $values = implode(", ", $valueArrays);

      $query = "UPDATE $table SET $values WHERE id = $id";
      return $this->run_query($query, 'masalah saat mengupdate data');
  }


  public function run_query($query, $msg)
	{
		if($this->mysqli->query($query)) return true;
		else die($msg);
	}

  public function escape($name)
	{
		return $this->mysqli->real_escape_string($name);
	}

}

?>

ini fungsi get_topik yang memanggil fungsi get_infonya gan.. ini saya simpan di class yg berbeda

 public function get_topik()
  {
    return $this->_db->get_info('forum INNER JOIN user ON forum.user_id = user.id AND forum.id ORDER BY forum.id DESC');
  }
avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

maaf menyela .. barangkali ada yg bisa bantu saya menyelesaikan ini https://www.sekolahkoding.com/forum/get-id-dari-table-yg-ditampilkan-ke-modals mohon bimbingannya master .. terima kasih

avatar azizah
@azizah

7 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

oh ane paham, ini PDO ya gan? . berarti utk eksekusi kalau mau ambil data dari tabel kurang lebih seperti ini :

$this->_db->get_info('nama_tabel', 'id_1', 'id_2')

dimana id_1 adalah parameter yang mau dicari dan id_2 adalah parameter yang mau dicocokkan. Sehingga menghasilkan query seperti ini :

 <? SELECT * FROM 'nama_tabel' WHERE id_1 = id_2

sedangkan agan menggunakan get_info seperti dibawah :


public function get_topik()
  { return $this->_db->get_info('forum INNER JOIN user ON forum.user_id = user.id AND forum.id ORDER BY forum.id DESC');
  }

----------------------------------------------- sy paham maksud agan ingin menggunakan inner join. Namun apa yang agan lakukan bertentangan degan parameter yang dibutuhkan oleh get_info. Jadi kalau apa yang agan masukkan ke get_info kurang lebih akan seperti ini jadinya :

 <? SELECT * FROM forum INNER JOIN user ON forum.user_id = user.id AND forum.id ORDER BY forum.id DESC WHERE '' = ''

sedangkan untuk struktur inner join kurang lebih seperti ini :

 SELECT 'nama_kolom_tampil' FROM 'nama_tabel_pertama' INNER JOIN 'nama_tabel_kedua'
ON 'nama_kolom_join_tabel_pertama' = 'nama_kolom_join_tabel_kedua'

------------------------------------------------

Sayapun waktu mempelajari PDO mendapatkan hal yang sama ketika ingin men-join-kan tabel. Solusinya adalah buat public function baru dengan nama get_info_join (atau nama apapun yang agan mau) berikut dengan parameter-parameter yang dibutuhkan. Memakan waktu cukup lama diawal, tapi menghemat waktu banyak nantinya karena ketika akan menjoinkan tabel hanya jadi seperti ini :

 $return = $this->_db->get_info_join('nama_kolom_tampil', 'nama_tabel_pertama', 'nama_tabel_kedua', 'nama_kolom_join_tabel_pertama', 'nama_kolom_join_tabel_kedua')

------------------------------------------------

Saran saya agan selesaikan video yang ada dihalaman ini https://sekolahkoding.com/kelas/membuat-kelas-abstrak-pdo-database Perhatikan di video ke 5 (Where dan orWhere) karena konsepnya sama dalam membuat looping parameter. Dimana kita bisa melakukan Where beberapa kali begitupun kita jg bisa melakukan Join beberapa kali. . Semoga agan bisa nangkap penjelasan sy yang cukup amburadul ini :D

avatar chaidiryahya
@chaidiryahya

139 Kontribusi 99 Poin

Dipost 6 tahun yang lalu

Oh.. o..ooow.. sip gan saya paham sekarang. Terimakasih banyak pencerhannya..

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Siap gan, nanti ane share link github abstrak PDO yang udah ane modifikasi dari punyanya om Hilman. Udah ada fungsi escape dan join nya juga.

avatar chaidiryahya
@chaidiryahya

139 Kontribusi 99 Poin

Dipost 6 tahun yang lalu

Horeee.... oke gan ditunggu

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban