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.net lalu 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.ini isinya: ; 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
    Edit php.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_path umum 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 file phpinfo.php) untuk memastikan include_path di SAPI web (Apache/FPM) sudah benar (CLI kadang beda).
    • Pastikan paket php-xml & php-curl terpasang (beberapa kelas HTTP/DOM butuh ini).
  • Nginx + PHP-FPM
    • Pastikan editannya di php.ini/conf.d milik FPM, bukan CLI. Restart php-fpm.
  • 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 pear yang dieksekusi terkait dengan versi PHP yang dipakai web server. (Kadang perlu update-alternatives atau menjalankan pear dari prefix /usr/bin/pear yang benar.)

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