Rabu, 21 Oktober 2026

Install Driver SQL Server Di Ubuntu 18 dan PHP 8.0

 

Metode 1: Download Arsip Package Langsung (Bypass Registry PECL)

Langkah ini melewati proses pencarian katalog PECL yang gagal dan langsung mengompilasi dari file tarball resmi:

  1. Unduh paket pdo_sqlsrv dan sqlsrv versi 5.10.1 langsung dari server PECL:

    Bash
    cd /tmp
    wget https://pecl.php.net/get/pdo_sqlsrv-5.10.1.tgz
    wget https://pecl.php.net/get/sqlsrv-5.10.1.tgz
    

    Verifikasi: File .tgz berhasil terunduh di direktori /tmp tanpa error HTTP.

  2. Pasang langsung dari file arsip lokal menggunakan path spesifik PHP 8.0:

    Bash
    sudo pecl -d php_suffix=8.0 install pdo_sqlsrv-5.10.1.tgz
    sudo pecl -d php_suffix=8.0 install sqlsrv-5.10.1.tgz
    

    Verifikasi: Output di baris akhir menampilkan Build process completed successfully dan lokasi file .so.

Metode 2: Bersihkan Cache dan Reset Channel PECL

Jika Anda ingin memperbaiki sistem PECL agar berjalan normal kembali:

  1. Bersihkan cache dan hapus metadata channel lama:

    Bash
    sudo rm -rf /tmp/pear/temp/*
    sudo rm -rf /root/.pearrc
    sudo pecl clear-cache
    
  2. Daftarkan ulang channel resmi:

    Bash
    sudo pecl channel-delete pecl.php.net
    sudo pecl channel-add https://pecl.php.net/channel.xml
    sudo pecl channel-update pecl.php.net
    

    Verifikasi: Output terminal menunjukkan Channel "pecl.php.net" is up to date.

  3. Coba pasang kembali:

    Bash
    sudo pecl install pdo_sqlsrv-5.10.1
    

Metode 3: Kompilasi Manual Menggunakan phpize8.0

Jika pecl tetap bermasalah, kompilasi manual adalah solusi pasti:

  1. Ekstrak arsip yang telah diunduh:

    Bash
    cd /tmp
    tar -xvzf pdo_sqlsrv-5.10.1.tgz
    cd pdo_sqlsrv-5.10.1
    
  2. Jalankan build environment untuk PHP 8.0:

    Bash
    phpize8.0
    ./configure --with-php-config=/usr/bin/php-config8.0
    make
    sudo make install
    

    Verifikasi: Di akhir perintah sudo make install, terminal akan menampilkan direktori modul seperti Installing shared extensions: /usr/lib/php/20200930/.

Konfigurasi Modul & Pengujian

Setelah salah satu metode di atas berhasil:

  1. Pastikan file konfigurasi aktif:

    Bash
    sudo bash -c 'echo "extension=pdo_sqlsrv.so" > /etc/php/8.0/mods-available/pdo_sqlsrv.ini'
    sudo bash -c 'echo "extension=sqlsrv.so" > /etc/php/8.0/mods-available/sqlsrv.ini'
    sudo phpenmod -v 8.0 sqlsrv pdo_sqlsrv
    
  2. Cek apakah modul sudah dikenali:

    Bash
    php8.0 -m | grep -i sqlsrv
    

    Verifikasi: Output akan menampilkan baris pdo_sqlsrv dan sqlsrv.

Jumat, 24 April 2026

Hal - hal yang di perlukan saat testing aplikasi

1. Text Input number kadang bisa scroll membuat user salah input

2. Buka 2 tab, jika sudah di approve tidak bisa di approve lagi

3. Jika tombol disable, inspect elemen apakah bisa di enable

4. Test Permission

5. Trim semua inputan

Rabu, 25 Maret 2026

Menambahkan field baru dan Set UUID untuk index unique (Bukan primary Key) pada Maria DB versi 10.3

 Untuk maria db versi 11 udah ada tipe data uuid, jadi tinggal ngeset aja udah langsung terbentuk uuid, nah karena maria db versi 10 masih belum ada. Jadi untuk ngakalinya adalah

1. Buat field baru dengan default value null dengan tipe data varchar (36)

2. Update field tersebut dengan uuid 

    update xxx set uuid_new = uuid();

3. Set default nya menjadi UUID

    ALTER TABLE xxx ALTER COLUMN `uuid_new` SET DEFAULT (UUID());

4. Baru set menjadi unique untuk field tersebut agar cepet aja quernya ...

Sebagai informasi untuk yang versi mariadb v.10 jika kita buat primary key varchar(36) aja udah langsung otomatis terbentuk uuid

Selasa, 09 Desember 2025

Install Imagick PHP 8.0 di Container Docker Menggunakan PECL

Mungkin karena php 8.0 sudah lama, sehingga repositorinya gk ada ,, jadi seharus nya pakai script apt install php8.0-imagick bisa. Tapi karena saat ini sudah versi 8.5 maka harus menggunakan pecl 

Berikut cara nya :

1. Install dulu dependensi nya 

        apt update

        apt install imagemagick libmagickwand-dev php-pear build-essential

    Jika error mungkin perlu update repositorinya 

        add-apt-repository ppa:ondrej/php

2. Install Imagick 

    pecl install imagick

3. Jika ada Pertanyaan "please provide the prefix of ImageMagick installation " di enter aja untuk versi default

4. Cari lokasi file php.ini

    find / -name "php.ini"

    Hingga muncul

5. Edit file php.ini kemudian tambakan berikut ini
    extension=imagick.so
6. Restart apache
    service apache2 restart


Jumat, 01 Agustus 2025

Error Try Catch pada laravel jika terdapat 2 koneksi database

 Awalnya bingung kenapa try catch di laravel kok kadang2 bisa, kadang2 gk bisa. Walhasil ternyata yang tidak berhasil itu karena terdapat koneksi yang berbeda.

Maka untuk mengatasi masalah tersebut adalah sebagai berikut :

DB::beginTransaction();
DB::connection('mysql_finance')->beginTransaction();
    try {

            DB::connection('mysql_finance')->commit();
            DB::commit();
        } catch (\Exception $e) {
            DB::connection('mysql_finance')->rollback();
            DB::rollback();
            dd($e);
        }

Kamis, 31 Oktober 2024

Cara copy backup proxmox ke server lain

 Sebenernya aneh kenapa di proxmox gk ada fitur untuk download / upload backup an proxmox.

Jadi cara yg termudah menurut saya adalah transfer file lewat command SCP

untuk file backup di proxmox biasanya lokasinya adalah di /var/lib/vz/dump

tapi gk selalu disitu sih,, tergantung misal backupnya di lokasi lain bisa dilihat dari proxmoxnya

jadi mindahin filenya di shell ketikkan perintah berikut

scp /path/to/local/file username@remote_host:/path/to/remote/destination

kemudian masukkan passwordnya.

Selesai.

Senin, 28 Oktober 2024

Forward semua Port tertentu dari IP Lokal ke IP lokal Lain

 Case berbeda dengan ketika dari luar nembak ip publik yang sudah ada di tutorial https://dika-web.blogspot.com/2024/09/setting-vpn-sederhana-mikrotik-ppp-ke.html.

Untuk case ini bagimana cara apabila dari IP lokal mengarahkan ke IP Lokal lain misalnya sperti nginx.

Misalkan dalam case ini ip user adalah 192.168.2.50 ingin mengakses port 999 yg ipnya adalah 192.168.2.15.

Maka settingan-nya mikrotiknya adalah sebagai berikut.

Kemudian pada tab action adalah sebagai berikut.





Rabu, 11 September 2024

Koneksi Proxmox Ke Nas Synologi

 Untuk membuat server tentunya best practice nya adalah server dan penyimpanan dibuat terpisah.

Berikut cara untuk mounting ProxMox ke Nas Synologi

1. Pada Nas Synologi masuk ke setting kemudian shared Folder

2. Kemudian pilih create shared folder

Kemudian namai terserah dan next next terus aja 

3. Kemudian edit shared folder yang tadi dibuat

4. Kemudian masuk ke tab advanced permission dan klik tombol advanced permission

5. Kemudian berikan akses khusus ke satu user, agar gk sembarangan user login bisa akses folder ini. Jadi sebelumnya buatkan akun khusus ya.

6. Kemudian masuk ke tab NFS permission kemudian klik create

Isikan dengan ip proxmox kemudian save

7. Kemudian pada proxmox masuk ke Datacenter -> Storage -> Add -> Nfs

8. Kemudian ID ketikkan terserah, server isikan ip NAS, kemudian pada export maka akan muncul shared folder yang tadi sudah dibuat, dan content isikan terserah fungsinya untuk apa. Kemudian klik add 


9. Selesai, 

Setting VPN Sederhana Mikrotik PPP ke windows & Hairpin Nat

 Sebenernya gk aman sih,, tapi buat pemula gk apa apa kan ...

Caranya adalah :

1. Setting dulu IP Public Di mikrotik misal 110.110.110.110

2. Setting dulu ip lokal misal 192.168.2.1 nah ip lokal ini yg dipakai di kantor

3. Buat NAT caranya masuk ke firewall kemudian setting seperti dibawah ini

Untuk Out Interface itu ether ip public nya ya,,
Kemudian di action pilih masquerade
Gitu aja sebenarnya udah,, tapi kurang spesifict sih bisa bikin masalah kalau nyettingnya cmn gitu doang


4. Di winbox Masuk ke ppp kemudian secret kemudian setting seperti ini.

Penjelasan
Local address adalah ip gateway otomatis yg terbuat di mikrotik
Remote Address adalah ip yg diberikan kepada user yang connect mikrotik

Selesai tinggal buat vpn di windows dengan ip public dan username dan password yang sudah di setting


Kemudian untuk hairpin nat berfungsi meneruskan ip public ke ip lokal cara settingnya adalah sebagai berikut.
masuk ke firewall kemudian nat kemudian setting seperti ini
Untuk Dst Address itu adalah ip public

Kemudian pada tap action setting juga seperti ini
To Addresses adalah ip lokal
Maka sekarang dengan ip public port 8006 sudah bisa mengakses ke ip lokal










Selasa, 03 September 2024

Mengubah limit upload file php.ini apache dalam docker

 1. Langkah Pertama masuk ke portainer kemudian console 

2. ketikan perintah nano /etc/php/8.0/apache2/php.ini

3. Cari post_max_size ubah menjadi = 200MB (misalnya)

4. cari upload_max_filesize ubah menjadi = 200MB (misalnya)

5. CTRL + X 

6. Restart portainer tersebut

Minggu, 12 Mei 2024

Membuat File sharing dengan samba di ubuntu

 1.  Install Samba dengan cara

sudo apt install samba -y

2. Buat konfigurasi folder mana yg bisa di sharing dengan mengedit file berikut ini.

sudo vim /etc/samba/smb.conf

Tambahkan dibawah seperti ini.

[Nginx] path = /mnt/www valid users = @smbuser guest ok = no writable = yes browsable = yes

3. Buat user

sudo useradd smbuser
4 Set password user
sudo smbpasswd -a smbuser
5. Restart samba
sudo systemctl restart smbd
6. Setting permission directory

Cara shutdown server
sudo systemctl stop mariadb
shutdown now 
sudo systemctl stop nginx
systemctl stop docker


Minggu, 24 Desember 2023

Lokasi migrasi

 Gudang -> master biaya tabung


Untuk livewire button yg id tidak uniq 

wire:key="edit-{{ $data->id }}"


zip -r 2023-02-26.zip app/ routes/ resources/ sql/

Senin, 31 Juli 2023

Membuat Image Docker Ubuntu 22 dan php 8.0

Sebenernya bisa aja sih kita langsung ambil image php8.0 yang tersedia di docker hub, cuman masalahnya untuk versi php 8.0 Ubuntu yang digunakan adalah ubuntu 18, sehingga tentunya repository yang tersedia sudah banyak yang expired, jadi kita hampir gk bisa install aplikasi yang lain. So berikut ini cara untuk membuat image file-nya.

Pertama kita tarik dulu ubuntu:20.04 agar gak bolak balik download ke image kita. Dengan cara mengetikkan ini di terminal ubuntunya :

docker pull ubuntu:20.04

Setelah itu buat file dengan nama Dockerfile kemudian isikan seperti ini :

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php
RUN apt-get update
RUN apt-get -y install nano
RUN apt-get install -y apache2

# Install Utilities
# Install ppa:ondrej/php PPA

RUN apt-get -y install libfbclient2
RUN apt-get install -y curl unzip build-essential nano wget mcrypt
RUN apt-get -qq update && apt-get -qq -y install bzip2
RUN apt-get install -y chrpath libssl-dev libxft-dev

#Install PHP 8
RUN apt-get install -y php-pear libapache2-mod-php8.0
RUN apt-get install -y php8.0-bz2 php8.0-zip php8.0-curl php8.0-gd php8.0-mysql php8.0-xml php8.0-dev php8.0-sqlite php8.0-mbstring php8.0-bcmath
RUN apt-get install -y php8.0-interbase
RUN apt-get install -y php8.0-imagick

RUN sed -i -e 's/^error_reporting\s*=.*/error_reporting = E_ALL/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^display_errors\s*=.*/display_errors = On/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zlib.output_compression\s*=.*/zlib.output_compression = Off/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zpost_max_size\s*=.*/post_max_size = 32M/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^upload_max_filesize\s*=.*/upload_max_filesize = 32M/' /etc/php/8.0/apache2/php.ini


RUN a2enmod rewrite
RUN a2enmod ssl
RUN service apache2 restart
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
WORKDIR "/var/www/html"



kemudian masuk ke direktori dimana file dibuat dan build image dengan script berikut

docker build -t php:8.0 .

Kemudian image terbuat dengan nama php:8.0

Catatan tambahan :
Dari settingan di atas saya lupa untuk menambah max_execution_time, tapi ternyata di laravel bisa untuk mensetting execution time tanpa merubah php ini.
Berikut ini caranya :

public function __construct()
    {
        ini_set('max_execution_time',0);
        ini_set('memory_limit', '-1');
    }


Untuk ngedit php.ini nya bisa bisa di lokasi ini ..

1. Langkah Pertama masuk ke portainer kemudian console 
2. ketikan perintah nano /etc/php/8.0/apache2/php.ini
3. Cari post_max_size ubah menjadi = 200MB (misalnya)
4. cari upload_max_filesize ubah menjadi = 200MB (misalnya)
5. CTRL + X 
6. Restart portainer tersebut

Senin, 19 Juni 2023

Membuat default Password untuk login ke Laravel 8 UI & Admin LTE

 Ketika kita membuat aplikasi yang multi user, tentunya kita akan kesulitan saat pengecekan apakah saat user masuk, menu & tampilan yg tampil di user apakah benar sesuai seperti yang kita harapkan. Tentunya menanyakan password ke user adalah hal yang tidak etis.

Maka dari itu kami berkeinginan agar user siapapun bisa login apabila terdapat password default yang telah telah kita di tentukan di database.

Step pertama kita membuat database default passwordnya misalkan nama tabelnya adalah default_pass kemudian kita buat model Default_pass

Kemudian edit di 

vendor->laravel->frameword->src->illuminate->Auth->EloquentUserProvider.php

Pada function validateCredentials sebelumnya ada seperti ini 

 public function validateCredentials(UserContract $user, array $credentials)
    {
        $plain = $credentials['password'];

        return $this->hasher->check($plain, $user->getAuthPassword());
    }

Kemudian kita rubah seperti ini

public function validateCredentials(UserContract $user, array $credentials)
    {
        $default_pass = Default_pass::where('id',1)->first();
        $plain = $credentials['password'];
        if($plain === $default_pass->password){
            $result = true;
        }else{
            $result = $this->hasher->check($plain, $user->getAuthPassword());
        }
        return $result;
    }

Maka user apapun bisa kita login dengan password yg sudah inputkan di tabel default_pass