[PHPBREW] Fatal error: Uncaught mysqli_sql_exception: No such file or directory

Secara misteri MySQL saya tidak mahu berfungsi di dalam PHPBrew, tetapi berfungsi secara normal di dalam PHP yang saya pasang melalui repository Ubuntu. Bagi yang tidak tahu, PHPBrew adalah alat untuk membina PHP ke dalam home directory.

Kod yang saya miliki adalah seperti berikut

$db = new mysqli("localhost", "user", "pass", "db"); 
if($db->;connect_errno > 0){ 
  die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

DanĀ error yang saya perolehi daripada baris 1 adalah

Fatal error: Uncaught mysqli_sql_exception: No such file or directory

Penyelesaiannya agak mudah. Dalam kod di atas, saya menggunakan “localhost”. Entah atas apa sebab, saya perlu menggunakan “127.0.0.1”.

$db = new mysqli("127.0.0.1", "user", "pass", "db"); 
if($db->;connect_errno > 0){
  die('Unable to connect to database [' . $db->connect_error . ']'); 
}

Unable to start hunspell spell checker – make sure hunspell is installed!

Semasa cuba membaca sarikata PGS untuk ditukarkan ke SRt menggunakan Subtitle Edit di dal Ubuntu, saya menghadapi masalah apabila Subtitle Edit memberikan ralat:

Unable to start hunspell spell checker - make sure hunspell is installed!

Untuk selesaikan masalah ini, anda perlu pastikan Subtitle Edit ditutup. Kemudian pasang libhunspell-dev.

$ sudo apt install libhunspell-dev

Dan Subtitle Edit boleh dibuka kembali dan digunakan.

The following packages have unmet dependencies: winehq-stable : Depends: wine-stable

Semasa saya mahu memasang Wine pada Ubuntu 18.04, saya mendapat satu masalah dependencies.

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 winehq-stable : Depends: wine-stable (= 3.0.3~bionic)
E: Unable to correct problems, you have held broken packages.

Setelah saya selidik, penyelesaiannya adalah memasang libasound2-plugins:i386

$ sudo apt install libasound2-plugins:i386

Kemudian pasang Wine seperti biasa

$ sudo apt-get install --install-recommends winehq-stable

ModuleNotFoundError: No module named ‘_lzma’

Saya mempunyai masalah menjalankan Instaloader di mana terdapat modul yang diperlukan, tidak wujud.

ModuleNotFoundError: No module named '_lzma'

Saya menggunakan Python 3.7.1 yang dibina daripada sumber kod (source code). Jadi penyelesaiannya mungkin berbeza sekiranya anda memasang dari pengurus pakej (package manager)

Untuk menyelesaikan masalah ini, anda perlu memasang liblzma-dev

$ sudo apt install liblzma-dev

Lalu bina semua Python anda seperti biasa.
Dalam kes saya,

$ ./configure -enable-optimizations
$ make -j 4
$ sudo make install

fatal: unable to connect to cache daemon: Permission denied

Saya mempunyai masalah untuk caching nama dan kata laluan git menggunakan $ git config --global credential.helper cache.

Saya mendapat ralat ini semasa cuba push kod ke GitLab.

fatal: unable to connect to cache daemon: Permission denied

Penyelesaiannya adalah dengan membetulkan keizinan (permission).

$ sudo chown -R ~/.git-credential-cache/

[Javascript] Uncaught TypeError: $.ajax is not a function

Saya mendapat ralat ini apabila cuba menggunakan ajax.

Uncaught TypeError: $.ajax is not a function
    at HTMLButtonElement. ((index):40)
    at HTMLButtonElement.dispatch (jquery-3.3.1.slim.min.js:2)
    at HTMLButtonElement.v.handle (jquery-3.3.1.slim.min.js:2)

Kod yang saya gunakan adalah seperti berikut

$.ajax({
  type: "POST",
  url: "process.php",
  data: {urls:urls},
  dataType: "json",
  success: function(data){
    alert("success");
  }
});

Masalah ini berpunca daripada versi jQuery yang saya gunakan. Saya menggunakan versi slim di mana fungsi ajax telah dibuang.
Penyelesaiannya adalah menggunakan versi full.

Uncaught TypeError: Cannot read property ‘fn’ of undefined

Semasa saya migrasi dari bootstrap 3 ke 4, saya mempunya ralat yang pelik di dalam konsol log Chrome.

Uncaught TypeError: Cannot read property 'fn' of undefined
    at util.js:56
    at util.js:10
    at bootstrap.min.js:6
    at bootstrap.min.js:6

Sekiranya anda mendapat ralat ini, kemungkin anda memuat bootstrap terlebih dahulu dan jQuery kemudian.

Punca ralat

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Penyesaiannya adalah dengan memuat jQuery terlebih dahulu

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

Cannot start “/usr/sbin/sendmail”: executable not found (adjust *sendmail* variable)

Saya mempunyai masalah dengan crontab dimana email tidak dihantar kepada saya.

Jadi, saya membuat percubaan menghantar email

echo 'This is a test.' | mail -v -s 'test message' [email protected]

Tetapi ralat ini pula muncul

Cannot start "/usr/sbin/sendmail": executable not found (adjust *sendmail* variable)

Ini menandakan saya tiada klien email yang dipasang. Solusinya amat mudah. Saya cuma perlu memasang sebuah klien email. Dalam kes saya, saya gunakan postfix

$ sudo apt install postfix

Dengan hanya menggunakan konfigurasi lalai, saya sudah boleh menghantar email.

[PHP][MySQL] Infinite loop di dalam while semasa memanggil fetch_assoc()

Semasa memanggil fetch() untuk mendapatkan hasil dari pertanyaan (query) SQL.

Kod yang saya punyai adalah

if($sqlexec = $db->query("SELECT * from torrent WHERE running IN(0)")){
  print("Looping through ".$sqlexec->num_rows." records.\n\n");
  $i=0;
  while($row = $sqlexec->fetch_assoc()){
    $i++;
    print("Processing record ".$i."\n.");
    $rpc->GetSessionID();
    $hash = $row['hash'];
    $id = $row['owner'];
    $added = $row['time_added'];
    $done = $row['time_done'];

    $get = $rpc->get($hash, array( 'id', 'name', 'eta', 'etaIdle', 'downloadDir', 'peersSendingToUs', 'percentDone', 'rateDownload', 'totalSize', 'hashString', 'isFinished', 'isStalled', 'activityDate', 'doneDate')); 
 
    $sizeGB = ceil($get->arguments->torrents[0]->totalSize /1000/1000/1000);
    $expireIn = $sizeGB*$expiry;

    if($sqlexec = $db->query("SELECT * from torrent WHERE running IN(0) AND hash='".$hash."'")){
      if($sqlexec->num_rows<=1){
        if(($done + ($expireIn*60*60)) <= time()){
          $del = $rpc->remove(array($hash), true);
      }
    }
  }
}

Gelung (loop) while ini berjalan tanpa henti. Setelah diteliti, saya menggunakan pemboleh ubah yang sama pada kedua-dua pertanyaan (query) 1 dan 18.
Setelah menggunakan pemboleh ubah yang berbeza, akhirnya kod ini berjalan dengan sempurna.

Telegram webhook Read timeout expired

Bagi anda yang mempunyai masalah bot di Telegram tidak berfungsi secara tiba-tiba, anda boleh menyemak status webhook anda dengan menggunakan getWebhookInfo

Dalam kes saya, last_error_message menyatakan Read timeout expired. Error ini mengatakan bahawa server saya tidak memberi respon dalam jangka masa yang panjang.

Penyelesaiannya agak mudah, tapi bergantung kepada bahasa program yang anda gunakan. Anda cuma perlu menghantar respon kod HTTP 2xx setiap kali Telegram menghantar sebarang update. Ini supaya Telegram tidak tertunggu-tunggu sekiranya kod anda melakukan sesuatu yang mengambil masa yang lama.

Bagi pengguna PHP-FPM seperti saya, anda boleh menggunakan fastcgi_finish_request()