[PHP][MYSQL] Statement tidak berfungsi

Saya mengalamai satu masalah di mana query MySQL UPDATE tidak berfungsi. Agak pelik apabila $db->prepare dan $db->query memberi respon yang kosong, tiada perubahan database server tiada juga error dalam log.

Disebabkan itu, saya cuba melakukan query tersebut di sekeliling code untuk mencari di manakah query tersebut berfungsi dan di mana tidak. Lalu saya dapati query tersebut tidak berfungsi selepas code ini:

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){   
          $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); exit;
        }      
        break;
     }
}

Saya berfikir sejenak lalu memutuskan untuk menutup statement SQL tersebut menggunakan $sqlexec->close():

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){
            $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); 
            exit;
        }
        break;
    }
    $sqlexec->close();
}

Berjaya! Saya tidak tahu kenapa statement ini tidak tertutup sendiri setelah selesai, tetapi mungkin membiasakan diri untuk menutup prepared statement setelah selesai adalah sesuatu yang bagus sekaligus dapat mengelakkan bug yang tidak dijangka.

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915

Ralat ini muncul ketika saya cuba menaik-taraf kernel. Saya tidak membuat penyelidikan yang lebih mendalam untuk mengetahui fungsi fail-fail ini, tetapi cara membetulkannya amatlah mudah.

Apa yang anda perlukan adalah memuat turun fail yang terlibat daripada pautan ini.
Berdasarkan ralat yang saya dapat iaitu

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

Fail yang saya perlukan adalah kbl_dmc_ver1_01.bin, kbl_guc_ver9_14.bin, bxt_guc_ver8_7.bin.

Setelah saya memuat turun fail-fail berkenaan, saya cuma perlu salin ke lokasi /lib/firmware/i915/.

$ sudo cp kbl_dmc_ver1_01.bin /lib/firmware/i915
$ sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
$ sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

Panduan ini ditulis semula pada 2 Ogos 2018

W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.

Masalah ini timbul apabila saya cuba menaik taraf kernel. Anda boleh membiarkan ralat ini kerana tiada sebarang ancaman kepada sistem anda.

Untuk menghilangkan ralat ini, anda perlu edit
/etc/mdadm/mdadm.conf dan letakkan code di bawah kedalamnya

ARRAY devices=/dev/sda

Ditulis semula pada 2 Ogos 2018

Failed to start ghost.service: Unit ghost.service not found

Ghost adalah sebuah blog yang amat cantik dan mudah digunakan. Setelah saya restart server, saya gagal memulakan Ghost. Agak pelik mengapa unit service hilang selepas reboot.

Cara untuk membetulkan masalah ini khas kepada pengguna ghost-cli.

  1. Mula-mula, pergi ke directory blog anda. Lalu edit config.production.json.
  2. Padam line"process": "systemd", dari config berkenaan.
  3. Kemudian setup system init script kembali dengan menaip sudo ghost setup systemd

Setelah selesai, blog anda boleh dimulakan seperti biasa:

$ sudo ghost start

autoreconf: failed to run autopoint: No such file or directory

Jika anda mendapat ralat ini, solusinya amat mudah!

Saya menggunakan Ubuntu 16.04 dan log masalah yang saya dapat adalah seperti dibawah:

autoreconf: Entering directory '.'
autoreconf: running: autopoint --force
Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext

Cara untuk membetulkannya adalah dengan memasang autopoint

$ sudo apt install autopoint

Http error 499 Nginx

Pertama kali saya melihat kod ralat ini, saya agak runnsing kerana carian di Google tidak membantu. Cuma informasi yang saya dapat adalah, kod ini khas untuk Nginx dan terjadi apabila klien memutuskan hubungan sebelum Nginx sempat memberikan kod respon.

Setelah saya siasat, saya mengesyaki puncanya adalah dari PHP-FPM. Ini kerana Nginx berfungsi dengan baik, tetapi fail PHP memgambil masa amat lama apabila dibuka dan akhirnya berakhir dengan timeout. Kemudian saya dapati ini adalah kerana kesilapan saya dalam kod PHP di mana while loop berjalan tanpa henti (infiniti). Apa yang saya lakukan adalah memberhentikan PHP-FPM

$ sudo systemctl stop php7.1-fpm

Kemudian saya betulkan kesalahan kod PHP tadi, lalu menghidupkannya semula:

$ sudo systemctl start php7.1-fpm

[Cloudflare][Caddy][Nginx] ERR_TOO_MANY_REDIRECTS

Selepas memasang Caddy dan mengaktifkan SSL pada domain yang menggunakan Cloudflare, saya menerima error daripada browser Chrome.

The page isn’t working
  your.domain redirected you too many times.
 - [Try clearing your cookies](https://support.google.com/chrome?p=rl_error&hl=en-US).
ERR_TOO_MANY_REDIRECTS

Cara untuk menyelesaikan masalah ini agak mudah. Di dalam tetapan Cloudflare, anda cuma perlu menukar SSL daripada Flexible kepada Full.

Boleh juga diaplikasikan sekiranya anda menggunakan Nginx.

The method driver /usr/lib/apt/methods/https could not be found.

Sekiranya anda menambah sumber pakej yang dimulai dengan https ke dalam /etc/apt/sources.list, anda mungkin mendapat ralat ini.

The method driver /usr/lib/apt/methods/https could not be found.

Penyelesaiannya agak mudah. Anda cuma perlu memasang pakej yang diperlukan dengan menaip ke shell

$ sudo apt-get install apt-transport-https

Penggunaan CPU 100% oleh proses index_cpu.cgi

Sekiranya anda mempunyai masalah penggunaan CPU yang amat tinggi disebabkan oleh index_cpu.cgi, anda mungkin adalah seorang pengguna Webmin/Virtualmin.
Penggunaan CPU yang amat tinggi tersebut sebenarnya adalah kesan dari penggunaan tema Authentic. Anda tidak perlu risau kerana Authentic akan menggunakan kuasa CPU untuk mengira data hanya sekiranya anda log masuk ke panel Webmin/Virtualmin. Jadi, anda hanya perlu log keluar untuk menghentikannya.

Sekiranya anda mahu menyelesaikannya secara kekal, anda boleh bertukar ke tema yang lain.