Penggunaan fungsi SYMLINK pada PHP

In addition to the main plugin file, Query Monitor includes a file named db.php which gets symlinked into your wp-content directory when the plugin is activated. This file is a WordPress dropin plugin and it allows Query Monitor to provide extended functionality such as logging the query result and full stack trace for all database queries.

Table of Contents

  • When Query Monitor is unable to symlink its db.php file into place
  • Using WP-CLI
  • Using the command line
  • Relaxing the file permissions
  • Via your hosting control panel
  • When an existing db.php file is already in place
  • Apa itu Symlink?
  • Cara 1. Membuat symlink melalui SSH
  • Cara 2. Membuat symlink melalui script PHP
  • Cara 3. Membuat symlink melalui Cron Job

Occasionally PHP won't be able to put this symlink in place. Some common causes are:

  • The file permissions of the wp-content directory means it isn't writable by PHP
  • Another wp-content/db.php file is already in place
  • The filesystem is read-only
  • The files for the site have been copied from elsewhere (eg. during a move from one hosting provider to another) and the existing symlink no longer points to a valid location
  • Files have been moved by XAMPP (or similar) and the symlink failed to copy
  • The QM_DB_SYMLINK constant is set to false, for example in your wp-config.php file, preventing the symlink from being created

Query Monitor will still work fine in this situation but you won't see extended information that makes Query Monitor much more useful.

In this situation you can create the symlink manually using one of the methods below.

Using WP-CLI

Query Monitor (version 3.6 and above) includes a WP-CLI command for putting the symlink into place:

Using the command line

If you don't have access to WP-CLI you can run a command to create the symlink manually:

macOS / Linux:

ln -s /path/to/wordpress/wp-content/plugins/query-monitor/wp-content/db.php /path/to/wordpress/wp-content/db.php

Windows (requires administrator privileges):

mklink C:\path\to\wordpress\wp-content\db.php C:\path\to\wordpress\wp-content\plugins\query-monitor\wp-content\db.php

Relaxing the file permissions

Relax the file permissions on the wp-content directory and then de-activate and re-activate Query Monitor and it'll attempt to create the symlink again.

Via your hosting control panel

If you're unable to do any of the above, or your host prevents the creation of symlinks via PHP, you should be able to use your web hosting control panel (such as Plesk or cPanel) to create the symlink. Contact your web host if you're unsure.

When an existing db.php file is already in place

The db.php file will sometimes conflict with another plugin that also uses a db.php file. Such plugins include:

  • W3 Total Cache
  • LudicrousDB
  • HyperDB

There is nothing that can be done about this. This a WordPress core limitation due to the fact that the dropin plugin file must be called db.php and placed in the wp-content directory, and only one can exist there.

Penggunaan fungsi SYMLINK pada PHP

Symbolic Link atau yang biasa kita kenal dengan istilah symlink adalah salah satu teknik pemanggilan file atau folder, dari folder satu ke folder lainnya. Pada panduan ini, kami akan berbagi cara membuat symlink di cPanel melalui berbagai cara.

Namun sebelum kami membahas tentang cara membuat symlink di cPanel, kami akan menjelaskan terlebih dahulu apa itu symlink dan pemanfaatannya. Berikut informasi selengkapnya.

Symbolic Link atau disingkat menjadi symlink adalah jenis file dalam sistem operasi UNIX yang berfungsi sebagai semacam shortcut atau tautan ke file atau direktori lain. Symlink bermanfaat untuk mengurangi potensi terjadinya duplikasi file atau direktori oleh sebuah aplikasi, sehingga menghemat ruang penyimpanan.

Salah satu contohnya adalah ketika Anda menggunakan framework Laravel, ada folder storage yang berisi gambar dimana biasanya ada proses pemanggilan file gambar pada folder tersebut.

Biasanya Anda akan menggunakan perintah: php artisan storage:link untuk langsung setting symlink, namun hal tersebut tidak bisa dilakukan pada paket hosting Rumahweb dikarenakan secara default fungsi symlink masuk ke list disable_function php.

Anda dapat request enable fungsi symlink() pada cPanel hosting, dengan cara mengirimkan request ke tim teknis kami atau bisa request melalui ticket.

Setelah fungsi symlink() diaktifkan oleh tim teknis Rumahweb, Anda dapat membuat symlink di cPanel melalui beberapa cara berikut.

Setidaknya ada 3 cara yang bisa anda gunakan, untuk membuat symlink di cPanel hosting. Berikut 3 cara yang bisa Anda pilih.

Untuk pengguna layanan hosting Medium keatas serta Cloud hosting, Anda dapat membuat symlink cPanel melalui SSH. Berikut adalah langkah-langkah membuat symlink melalui SSH cPanel:

  1. Login ke cPanel hosting Anda.
  2. Klik menu Terminal.
  3. Masukkan perintah dengan format berikut:
ln -s target_path link_path

Contoh: misalkan Anda ingin membuat symlink laravel dari folder laravel/storage/app/public ke public_html/storage gunakan syntax berikut:

ln -s /home/usernamecpanel/laravel/storage/app/public /home/usernamecpanel/public_html/storage

(sesuaikan usernamecpanel sesuai username cPanel hosting Anda)

Apabila paket hosting yang Anda gunakan belum support SSH, maka Anda bisa membuat symlink melalui script php.

Buatlah sebuah file, misalnya bernama symlink.php. Lalu anda bisa mengisi script tersebut, menggunakan contoh script PHP symlink sebagai berikut:

<?php
    $target = $_SERVER['DOCUMENT_ROOT']."/../laravel/storage";
    $link = $_SERVER['DOCUMENT_ROOT']."/storage";
    if(symlink( $target, $link )){
        echo "OK.";
    } else {
        echo "Gagal.";
    }
?>

Keterangan :

  • Pada bagian “$target = $_SERVER[‘DOCUMENT_ROOT’].”/../laravel/storage“;” Silahkan sesuaikan path target storage folder yang digunakan.
  • Lalu, pada bagian “$link = $_SERVER[‘DOCUMENT_ROOT’].”/storage“;” . Silahkan sesuaikan ke path dimana folder storage akan di link kan.

Untuk menjalankan script tersebut silahkan langsung akses melalui https://namadomainanda.com/namafilesymlink.php atau sesuaikan dengan nama file php yang anda buat. Apabila setelah di eksekusi muncul “OK” . Berarti symlink folder storage Anda berhasil di buat.

Apabila paket hosting yang Anda miliki kebetulan tidak memiliki akses SSH, Anda masih tetap bisa membuat symbolic link dengan mudah, dengan menggunakan bantuan Cron Jobs.

Sebagai contoh, kali ini kami ingin membuat symbolic /public_html/dataku, yang diarahkan ke sebuah direktori yang berlokasi di /home/usercpanel/dataku. Berikut langkah-langkahnya:

  1. Login ke cPanel, masuk ke menu Cron Jobs. Pilih Common Settings, kemudian pilih Once Per Minute. Pada kolom command, masukkan perintah berikut:

    ln -s /home/usercpanel/dataku /home/usercpanel/public_html/dataku

  2. Tunggu sekitar 1 menit, kemudian masuk ke File Manager, dan masuk ke public_html. Symbolic link dataku sudah berhasil dibuat. Apabila symbolic link dataku diklik, maka akan diarahkan ke dalam direktori /home/usercpanel/dataku.

  3. Kembali lagi ke menu Cron Jobs, kemudian hapus cron jobs yang sudah dibuat sebelumnya. Langkah ini penting dilakukan, supaya cron job yang sudah dibuat tidak terus menerus terproses oleh cPanel.

Cukup mudah bukan cara membuat symlink di cPanel? Jika Anda masih temui kendala, jangan sungkan untuk menghubungi kami melalui livechat, atau bisa membuat tiket agar dapat kami bantu cek.

Demikian tutorial cara membuat symlink di cPanel, semoga bermanfaat.


Bayo AM