0

Mengaktifkan error log pada PHP-CLI

Secara lalai, PHP-CLI tidak menulis log bagi sebarang ralat semasa anda menjalankan skrip. Perkara ini agak menyusahkan kerana anda akan tercari-cari log sekiranya skrip anda tidak berfungsi.

Untuk mengaktifkan panulisan log, anda harus edit php.ini. Kedudukan file ini bergantung kepada konfigurasi PHP anda. Dalam kes saya, kedudukannya di

/etc/php/7.2/cli/php.ini

Kemudian, cari baris

error_log =

Atau lebih spesifik pada konfigurasi saya yang terletak di baris ke-586,

; error_log = syslog

Ubah baris tersebut kepada

error_log = php_error.log
  • Pastikan tiada simbol ; di hadapan baris
  • Anda boleh mengubah php_error.log kepada apa sahaja yang anda mahukan

Apabila log ditulis, php_error.log akan diletakkan di dalam direktori semasa.
Contohnya jika anda berada di dalam

/home/user/log

Apabila anda menjalankan skrip.php, log akan ditulis di

/home/user/log/php_error.log
0

Cara memasang mcrypt di dalam PHP 7.2

Mungkin ada di antara anda yang tahu bahawa modul mcrypt telah dibuang secara kekal daripada PHP 7.2 kerana moduk tersebut tidak mempunyai sebarang pembangunan lebih daripada 10 tahun. Hal ini agak menyusahkan bagi pengguna yang memerlukan mcrypt, tetapi harus dilakukan bagi mengekalkan kestabilan PHP.

Saya menggunakan Nginx sebagai panduan dan sekiranya anda menggunakan Apache, mungkin ada sedikit langkah berbeza.

Pertama, anda harus pastikan anda sedang menggunakan PHP 7.2.

$ php -v

Pasangkan beberapa pakej yang diperlukan untuk compile modul mcrypt, lalu pasang mcrypt.

$ sudo apt -y install gcc make autoconf libc-dev pkg-config php-pear php7.2-dev
$ sudo apt -y install libmcrypt-dev
$ sudo pecl install mcrypt-1.0.1

Apabila anda dipaparkan dengan pilihan seperti ini:

libmcrypt prefix? [autodetect] :

Tekan [ENTER].

Setelah selesai, akan terpapar mesej seperti ini

...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'    ---->   this is our path to mcrypt extension lib
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

Kemudian anda perlu membuat konfigurasi di dalam PHP
Untuk php-cli:

$ sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"

Untuk php-fpm:

$ sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/fpm/conf.d/mcrypt.ini"

Apabila selesai, sahkan mcrypt telah terpasang

php -i | grep "mcrypt"

Anda seharusnya akan melihat paparan seperti ini

/etc/php/7.2/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
0

[PHP] Masalah menetapkan permission pada mkdir() dan chmod()

Situasi masalah kali ini agak mengelirukan kerana saya sudahpun merujuk pelbagai laman web tentang contoh penggunaan mkdir() serta chmod(). Tetapi, masalah sama tetap muncul di mana permission yang saya tetapkan untuk folder yang saya hendak buat tidak sama dengan permission folder yang diberikan kepada folder tersebut.

Saya menggunakan mkdir() seperti ini:

mkdir("./test", 777);

Tetapi yang terhasil adalah 007.
Jadi saya cuba menggunakan chmod():
mkdir("./test", 777);
chmod("./test", 777);

Tetapi masih juga sama. Lalu saya cuba mengubah mask:

$oldmask = umask(0);
mkdir("./test", 777);
umask($oldmask);

Tekanan semakin terasa apabila hasilnya tetap sama!

Setelah beberapa minit merenung hidup, saya merujuk semula dokumentasi PHP dan mendapati saya mempunyai kesalahan menaip. Permission yang saya taip sepatutnya adalah 0777 dan bukannya 777. Jadi code akhir saya yang berfungsi adalah:

mkdir("./test", 0777);

Pengajarannya adalah sentiasa menumpukan perhatian.

0

Konfigurasi Nginx untuk Rapidleech Berserta Password

Rapidleech adalah satu program PHP yang amat berguna. Rapidleech memudahkan proses muat turun dari beratus laman filehosting.

Bagi pengguna Nginx, cara memasangnya agak berbeza berbanding Apache. Saya andaikan anda telahpun memuat turun source Rapidleech daripada Github.

Pasang pakej yang diperlu untuk mencipta .htpasswd

$ sudo apt update
$ sudo apt install apache2-utils

Cipta fail password (.htpasswd)

$ sudo htpasswd -c /etc/nginx/.htpasswd rapid
  • Gantikan rapid kepada username yang anda mahukan.

Tambahkan kod di bawah ke dalam konfigurasi Nginx

location ^~ /rap1d {
    auth_basic "Ding Dong Bell";
    auth_basic_user_file <strong>/etc/nginx/.htpasswd</strong>;
    location ~ .php { 
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        include snippets/fastcgi-php.conf;
    } 
}
  • Ubah rap1d kepada lokasi dimana anda menyimpan skrip PHP Rapidleech.

Kemudian reload Nginx

$ sudo systemctl reload nginx
0

Cara Memasang Composer Secara Global

Di sini saya ingin menerangkan secara ringkas cara untuk memasang Composer secara global.

Pastikan PHP dan Curl terpasang:

$ sudo apt-get install curl php5-cli

Muat-turun dan pasangkan Composer.

$ curl -sS https://getcomposer.org/installer | sudo php — –install-dir=/usr/local/bin –filename=composer

Anda boleh memastikan semula Composer teroasang dengan menaip:

$ composer –version
0

Centos 6 | Kemaskini PHP kepada versi 5.4

Cara mudah kemaskini versi PHP kepada 5.4 untuk Centos 6. Mungkin anda memerlukan versi yang lebih baharu kerana keperluan menjalankan kod php anda. Anda boleh melihat versi semasa PHP anda dengan menaip

$ php -v

Ada beberapa sebab mengapa anda memerlukan versi yang lebih tinggi. Dalam kes saya, saya memerlukan minimum versi 5.4 untuk menggunakan UserFrosting.

Di sini saya ingin menunjukkan cara mudah untuk mengemaskini versi PHP anda. Pastikan anda menggunakan Centos 6.

Langkah 1:
Pasang repository REMI serta EPEL

$ wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

Langkah 2:
Aktifkan repository REMI

$ cd /etc/yum.repos.d
$ nano remi.repo

Tukarkan

enabled=0

kepada

enabled=1

Tutup dan simpan perubahan

CTRL + X
Taip y dan ENTER

Langkah 3:
Kemaskini mysql. Dengan cara ini, segala pakej PHP juga akan turut dikemaskini

$ yum install mysql

Kemudian kemaskini mysql

$ mysql_upgrade -u root -p
  • Masukkan password anda sekiranya diminta

Sekiranya anda mendapat ralat seperti dibawah, sila pergi ke langkah tambahan.

ERROR 1436 (HY000) at line 1151: Thread stack overrun:  8864 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use 'mysqld --thread_stack=#' to specify a bigger stack. FATAL ERROR: Upgrade failed

Langkah Tambahan:
Edit konfigurasi mysql

$ nano /etc/my.cnf

Edit dan jadikan nilai thread_stack seperti dibawah

thread_stack = 256K

Tutup dan simpan

CTRL + x
Taip y dan ENTER

Restart mysql

service mysqld restart

Langkah 4:
Edit konfigurasi PHP

$ nano /etc/httpd/conf.d/php.conf

Buang atau komen (#)

 SetHandler application/x-httpd-php

Gantikan dengan

AddHandler php5-script .php

PHP-mbstring juga diperlukan untuk beberapa keadaan

$ yum install php-mbstring

Langkah 5:
Restart PHP

$ service httpd restart

Sekarang anda boleh memeriksa versi PHP anda dengan

php -v