Blog Wowrack

Konfigurasi PHP as CGI dengan suexec pada Apache

Catatan ini berasumsi, Apache dan php suda terinstall dan jalan dengan benar, pastikan php-cli dan mod_fcgid sudah terinstall, jika belum install dulu:

[root@server01 ~]# yum mod_fcgid php-cli

disable mod_php dengan cara beri tanda comment pada semua baris di file berikut:

/etc/httpd/conf.d/php.conf

edit file /etc/php.ini


###pastikan ada baris berikut
###[...]
cgi.fix_pathinfo = 1

Menyiapkan direktory untuk masing-masing vhost:


[root@server01 ~]# mkdir -p /home/prayoga/www/idprayoga.com/{htdocs,cgi-bin}
[root@server01 ~]# mkdir -p /home/perdana/www/idperdana.com/{htdocs,cgi-bin}
[root@server01 ~]# chown -R prayoga:prayoga /home/prayoga/www/idprayoga.com
[root@server01 ~]# chown -R perdana:perdana /home/perdana/www/idperdana.com
[root@server01 ~]# chmod -R 755 /home/prayoga/www/idprayoga.com
[root@server01 ~]# chmod -R 755 /home/perdana/www/idperdana.com

Karena kita akan menjalankan PHP menggunakan suExec, harus di cek terlebih dahulu letak document root suExec dengan perintah


[root@server01 ~]# suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

Di atas terlihat document root terletak pada /var/www (AP_DOC_ROOT="/var/www"). Dengan demikian kita tidak bisa memanggil binary PHP (/usr/bin/php-cgi) secara langsung karena berada di luar document root suexec. Dan suexec juga tidak mengijinkan symlink. Sehingga, untuk menangani hal tersebut adalah dengan menciptakan skrip wrapper yang akan memanggil binary PHP(/usr/bin/php-cgi) pada setiap situs web di direktory /var/www. Sebagai catatan, kepemilikan skrip wraper harus sesuai dengan user dan group yang mengakses.


[root@server01 ~]# mkdir -p /var/www/php-fcgi-script/prayoga
[root@server01 ~]# mkdir -p /var/www/php-fcgi-script/perdana
[root@server01 ~]# nano /var/www/php-fcgi-script/prayoga/php-fcgi-starter
###isi file tersebut sebagai berikut :
#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

keterangan :
baris PHPRC adalah direktory tempat file php.ini berada
baris PHP_FCGI_MAX_REQUESTS adalah jumlah maksimum permintaan sebelum proses fcgid dihentikan dan yang baru diluncurkan
baris PHP_FCGI_CHILDREN mendefinisikan jumlah child PHP yang akan diluncurkan

buat juga file php-fcgi-starter pada /var/www/php-fcgi-script/perdana

ubah permission dan kepemilikan file php-fcgi-starter


[root@server01 ~]# chmod 755 /var/www/php-fcgi-script/prayoga/php-fcgi-starter
[root@server01 ~]# chmod 755 /var/www/php-fcgi-script/perdana/php-fcgi-starter
[root@server01 ~]# chown -R prayoga:prayoga /var/www/php-fcgi-script/prayoga/
[root@server01 ~]# chown -R perdana:perdana /var/www/php-fcgi-script/perdana/

Buat virtual host pada httpd.conf


NameVirtualHost 10.100.100.99:80

<VirtualHost 10.100.100.99:80>
ServerAdmin webmaster@idprayoga.com
DocumentRoot "/home/prayoga/www/idprayoga.com/htdocs"
ServerName idprayoga.com
ServerAlias idprayoga.com
CustomLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.access_log" combined
ErrorLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.error_log"

ScriptAlias /cgi-bin/ "/home/prayoga/www/idprayoga.com/cgi-bin/"
<Directory "/home/prayoga/www/idprayoga.com/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

<IfModule mod_fcgid.c>
SuexecUserGroup prayoga prayoga
PHP_Fix_Pathinfo_Enable 1
<Directory /home/prayoga/www/idprayoga.com/htdocs>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/prayoga/php-fcgi-starter .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>

buat juga untuk idperdana.com seperti di atas dan sesuaikan path serta user groupnya

Restart apache.

Untuk testing, anda bisa membuat file ceking.php di masing-masing direktory htdocs.
isi file tersebut :


<?php
system("id");
?>

kemudian akses dari browser, maka harus menunjukkan masing-masing user dan group yang menjalankan.

jika masih ada kekurangan mohon diberi masukan. Terimakasih 😉

Blog Wowrack Indonesia

Share this post on social media:

Tinggalkan komentar



Konsultasikan Sekarang!
Isi form berikut dan tim kami akan menghubungi Anda untuk memberikan solusinya

    Your information will be securely sent to and stored in Google Sheets for the purpose of processing your form submission.
    Logo-Wowrack-Horizontal-breathing-space-02
    Surabaya (Kantor Pusat)
    Jl. Genteng Kali No. 8, Kel. Genteng,
    Surabaya, Jawa Timur 60275
    Indonesia
    (031) 6000-2888

    Jakarta (Kantor Penjualan)
    Menara BCA Lt. 50 Unit 4546,
    Jakarta Pusat, DKI Jakarta 10310
    Indonesia

    © 2026 Wowrack dan afiliasinya. Hak cipta dilindungi undang-undang.