Perbaiki include(System.php) di SLiMS (Linux)
Intinya sama: pasang PEAR (ekosistem paket PHP), install paket yang dibutuhkan, lalu pastikan include_path PHP mengenali direktori PEAR.
0) Cek cepat lingkungan
php -v
php -i | grep -i 'include_path'
which pear || echo "pear belum ada"
Catat versi PHP dan web server (Apache/Nginx + PHP-FPM).
1) Opsi A — Pakai paket distro (paling cepat)
Debian/Ubuntu
sudo apt update
sudo apt install -y php-pear php-xml php-curl
# opsional: sesuaikan versi PHP kalau butuh (php8.1-xml, dst)
RHEL/CentOS/Alma/Rocky
# Pastikan Remi/EPEL aktif kalau perlu
sudo dnf install -y php-pear php-xml php-curl
# atau: sudo yum install ...
Cek:
pear version
php -i | grep -i include_path
Biasanya PEAR terpasang di /usr/share/php dan otomatis masuk include_path.
Kalau distro kamu PEAR-nya jadul banget, lompat ke Opsi B.
2) Opsi B — Pakai installer resmi PEAR (go-pear.phar)
Aman dipakai bila paket distro tidak tersedia/up to date.
cd /usr/local/src
sudo curl -L -o go-pear.phar https://github.com/pear/pearweb_phars/releases/latest/download/go-pear.phar
sudo php go-pear.phar
Saat wizard muncul, pilih system (default) dan biarkan path ke:
- Binaries:
/usr/local/bin - PHP code:
/usr/local/lib/php
Cek:
pear version
3) Install paket yang dibutuhkan MARC SRU
Paket standar:
System(punya System.php)File_MARC(parser MARC)HTTP_Request2,Net_URL2,Net_Socket(HTTP SRU & dependensi)
sudo pear channel-update pear.php.net
sudo pear install System
sudo pear install HTTP_Request2
sudo pear install Net_URL2
sudo pear install Net_Socket
sudo pear install File_MARC
Kalau ada keluhan “No releases available…”, biasanya channel/config PEAR-nya. Jalankan
pear channel-discover pear.php.netlalu ulang.
4) Pastikan PHP bisa “melihat” PEAR (include_path)
Cek di CLI:
php -r "include 'System.php'; echo \"OK\n\";"
php -r "require_once 'File/MARC.php'; echo \"OK\n\";"
Pastikan konfigurasi web (Apache/Nginx + PHP-FPM) juga kebaca
Tambahkan satu file .ini agar include_path konsisten untuk FPM/Apache:
- Debian/Ubuntu (PHP-FPM Apache/Nginx)
Buat file:/etc/php/<versi>/mods-available/pear.iniisinya:; tambahkan direktori PEAR ke include_path include_path=".:/usr/share/php:/usr/local/lib/php"Lalu aktifkan:sudo phpenmod pear sudo systemctl restart php<versi>-fpm || sudo systemctl restart apache2 - RHEL/CentOS/Alma/Rocky
Editphp.ini(atau drop-in di/etc/php.d/99-pear.ini):include_path=".:/usr/share/php:/usr/local/lib/php"Restart layanan:sudo systemctl restart php-fpm || sudo systemctl restart httpd
include_pathumum PEAR: /usr/share/php (paket distro) dan/atau /usr/local/lib/php (go-pear manual).
5) (Opsional) “Jurus jaga-jaga” di SLiMS
Kalau tetap ngeyel, tambahkan guard di sysconfig.inc.php SLiMS (sesuaikan jalur PEAR kamu):
set_include_path(get_include_path()
. PATH_SEPARATOR . '/usr/share/php'
. PATH_SEPARATOR . '/usr/local/lib/php');
6) Restart & uji di SLiMS
# salah satu:
sudo systemctl restart apache2
sudo systemctl restart httpd
sudo systemctl restart php-fpm
Masuk ke Bibliografi → Copy Cataloging (MARC SRU). Error include(System.php) harusnya lenyap.
Troubleshooting kilat
- Masih “failed to open stream: System.php”
- Lihat
phpinfo()(via filephpinfo.php) untuk memastikaninclude_pathdi SAPI web (Apache/FPM) sudah benar (CLI kadang beda). - Pastikan paket php-xml & php-curl terpasang (beberapa kelas HTTP/DOM butuh ini).
- Lihat
- Nginx + PHP-FPM
- Pastikan editannya di php.ini/
conf.dmilik FPM, bukan CLI. Restart php-fpm.
- Pastikan editannya di php.ini/
- SELinux (RHEL family)
- Kalau kamu taruh PEAR di path custom (mis. /opt/pear), pastikan permissions & context tepat. (Cepatnya: taruh di /usr/share/php atau /usr/local/lib/php biar aman dari SELinux.)
- Multi-versi PHP (alternatives/remi/scl)
- Pastikan
pearyang dieksekusi terkait dengan versi PHP yang dipakai web server. (Kadang perluupdate-alternativesatau menjalankanpeardari prefix/usr/bin/pearyang benar.)
- Pastikan
Ringkasan 10-detik (tempel di runbook)
# Debian/Ubuntu
sudo apt install -y php-pear php-xml php-curl
sudo pear install System HTTP_Request2 Net_URL2 Net_Socket File_MARC
echo 'include_path=".:/usr/share/php:/usr/local/lib/php"' | sudo tee /etc/php/$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')/mods-available/pear.ini
sudo phpenmod pear
sudo systemctl restart php*-fpm apache2 || true