Debian için
Önceki PHP Paketinin Yapılandırılması Sonraki
Debian için
PHP4'ü yeniden paketlemeden önce sistemimizi buna hazır hale getirmemiz tabii en önemlisi PHP4 kaynak paketlerini indirmemiz gerekiyor. Bu aşamada yine debian paket yönetim sistemi bizi bu işten basitçe kurtarıyor.
$ cd /usr/local/src
$ apt-get build-dep php4
$ apt-get source php4
/usr/local/src dizininde artık şu dosyalar (da) var: php4-4.3.10, php4_4.3.10-9.diff.gz, php4_4.3.10-9.dsc ve php4_4.3.10.orig.tar.gz.
php4-4.3.10 dizini altındaki debian dizininde sırasıyla şu değişiklikleri yapıyoruz.
Dosya: /usr/local/src/php4-4.3.10/debian/control
Dosyanın en sonuna şu satırları ekleyin:
Package: php4-java
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${apache2:Depends},
php4-common (=${Source-Version})
Description: Java(TM) 2 Runtime Environment,
 Standard Edition Java Module for php4
    This package provides a module for Java(TM) 2 Runtime Environment
    support for php4 scripts.
.
    PHP4 is an HTML-embedded scripting language. Much of its syntax is
    borrowed from C, Java and Perl with a couple of unique PHP-specific
    features thrown in. The goal of the language is to allow web developers
    to write dynamically generated pages quickly.
.
Homepage: http://www.php.net/
Dosya: /usr/local/src/php4-4.3.10/debian/rules
Dosyanın içinde COMMON_CONFIG= ile başlayan bölüme işaretli satırı ekleyin. --with ile baslayan satırlardan herhangi birisinin altına ekleyebilirsiniz.
...
 --with-zip=/usr \
 --with-java=/usr/lib/j2sdk1.4-sun \
 --enable-dbx \
Dosya: /usr/local/src/php4-4.3.10/debian/modules
Dosyanın en sonuna;
...
xslt XSLT
sybase Sybase sybase_ct
java JAVA
Paketlerin Oluşturulması
Yeni deb paketimizi aşağıdaki komutla oluşturalım. (Ve hata olmaması için dua edelim.) Komutu çalıştırdığınızda "permission denied" hatası alırsanız geçici olarak /usr/local/src dizinini chown -R kullanıcı_adınız /usr/local/src ile giriş yapmış olduğunuz kullanıcıya verin. Daha sonra tekrar root kullanıcısına verirsiniz. Derleme işlemi bir süre daha devam edecektir.
Not
-us -uc seçenekleri oluşturulan paketleri şifreleyip imzalamanızı engeller.
$ dpkg-buildpackage -us -uc -rfakeroot
Derleme işlemi tamamlandığında, /usr/local/src dizinine çıkın. root olarak veya root haklarınızı kullanarak (sudo) tüm php4 paketlerinizi yükleyin. Unutmayın: Bundan sonra tüm php paketleriniz için Debian ağacını değil kendi paketlerinizi kullanmalısınız. Özellikle de kendi php4-sürüm.deb paketi ve ek modül paketlerini kurmanız gerekecek. Bir kere bu işlemi becerdikten sonra güvenlik ve ek modül gereksinimlerinizde, PHP sürümünü yükseltmek için yine Debian ağacından kaynak paketi indirip sadece yukarıda özelleştirmiş olduğumuz rules, control ve modules dosyalarını ilgili dizine atıp derleyerek paketlerinizi yeniden oluşturmalısınız.
Hata var ise: RedHat ve benzeri RPM tabanlı dağıtımlarda çoğunlukla hatanın temel sebebi geliştirme paketlerinin eksik yüklenmiş olmasıdır. Halbuki Debian sistemde yukarıda çalıştırdığımız komut (apt-get build-dep php4) eksik paket kalmasını engeller.
Önemli
Bir önemli hata sebebi ise, Java kurulumunda ld ile alakalı olarak bazı kütüphanelerin bulunamaması olabilmektedir. Özellikle tavsiyem her Java kurulumundan sonra Java kurulum dizinine geçilerek ldd ile aşağıdaki dosyaların kontrol edilmesidir. Örneğin, ldd libjava.so, ldd libverify.so, ldd libzip.so komutları nedense sürekli hata verir. Bu komutların çıktıları aşağıdaki gibi temiz olmalı ve hiç "Not Found" hatası alınmamalıdır. Aşağıda hatalı ve düzgün iki örnek verilmiştir. İlk örnekten de anlaşılacağı gibi ben her ihtimale karşın önceden libjava.so, libjvm.so, libverify.so dosyalarını /lib dizinine kopyalamıştım. Sembolik bağ da oluşturabilirsiniz. Ancak en önemlisi ld.so.conf dosyasının yukarıda anlatıldığı şekilde düzenlenmesi ve ldconfig komutunun çalıştırılmasıdır.
Başarılı örnek:
pokemon:/usr/lib/j2sdk1.4-sun/jre/lib/i386# ldd libjava.so
libjvm.so => /lib/libjvm.so (0x4002b000)
libverify.so => /lib/libverify.so (0x40455000)
libnsl.so.1 => /lib/tls/libnsl.so.1 (0x40467000)
libdl.so.2 => /lib/tls/libdl.so.2 (0x4047b000)
libc.so.6 => /lib/tls/libc.so.6 (0x4047e000
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x405d4000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
Başarısız örnek:
pokemon:/usr/lib/j2sdk1.4-sun/jre/lib/i386# ldd libjava.so
libjvm.so => /lib/libjvm.so (0x4002b000)
libverify.so => not found
libnsl.so.1 => /lib/tls/libnsl.so.1 (0x40455000)
libdl.so.2 => /lib/tls/libdl.so.2 (0x40469000)
libc.so.6 => /lib/tls/libc.so.6 (0x4046c000)
libm.so.6 => /lib/tls/libm.so.6 (0x405a0000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x405c2000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
Başarılı bir derleme aşağıdaki gibi sonlanır ve /usr/local/src dizini altında bir sürü php-XXX.deb paketi oluşur.
dh_lin
dh_compress -Xphp.ini
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `php4' in `../php4_4.3.10-9_all.deb'.
dpkg-deb: building package `php4-pear' in `../php4-pear_4.3.10-9_all.deb'.
dpkg-genchanges
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
Bende aşağıdaki paketler oluşturulmuş durumda:
pokemon:/usr/local/src# ls -1
caudium-php4_4.3.10-9_i386.deb
libapache2-mod-php4_4.3.10-9_i386.deb
libapache-mod-php4_4.3.10-9_i386.deb
php4-4.3.10
php4_4.3.10-9_all.deb
php4_4.3.10-9.diff.gz
php4_4.3.10-9.dsc
php4_4.3.10-9_i386.changes
php4_4.3.10.orig.tar.gz
php4-cgi_4.3.10-9_i386.deb
php4-cli_4.3.10-9_i386.deb
php4-common_4.3.10-9_i386.deb
php4-curl_4.3.10-9_i386.deb
php4-dev_4.3.10-9_i386.deb
php4-domxml_4.3.10-9_i386.deb
php4-gd_4.3.10-9_i386.debian
php4-imap_4.3.10-9_i386.deb
php4-java_4.3.10-9_i386.deb
php4-ldap_4.3.10-9_i386.deb
php4-mcal_4.3.10-9_i386.deb
php4-mhash_4.3.10-9_i386.deb
php4-mysql_4.3.10-9_i386.deb
php4-odbc_4.3.10-9_i386.deb
php4-pear_4.3.10-9_all.deb
php4-recode_4.3.10-9_i386.deb
php4-snmp_4.3.10-9_i386.deb
php4-sybase_4.3.10-9_i386.deb
php4-xslt_4.3.10-9_i386.deb
Paketlerin Yüklenmesi
# dpkg -i php4_4.3.10.deb php4-imap_4.3.10.deb php4-java_4.3.10.deb
PHP'nin Java'yı görmesi için bazı işlemler yapıyoruz. /usr/lib/php4/20020429-zts/ dizini altında java.so dosyası ile beraber ihtiyaç duyduğumuz için yüklediğimiz php modüllerine ait modül (*.so) dosyalarının olduğundan emin olalım. Ayrıca php_java.jar dosyasını da bu dizine kopyalamalıyız.
cp /usr/local/src/php4-4.3.10/ext/java/php_java.jar /usr/lib/php4/20020429-zts
php.ini dosyasında gerekli değişiklikleri yapalım. Ben sistemlerimde daha gelişmiş olan Apache2 kullandığım için /etc/php4/apache2/php.ini dosyasında değişiklik yapıyorum. Siz kendi apache sürümünüzü uygun php.ini dosyasını kullanın. Dosyadaki [Java] bölümünde aşağıdaki değişiklikleri yapın:
[Java]
java.class.path = /usr/lib/php4/20020429-zts/php_java.ja
java.home = /usr/lib/j2sdk1.4-sun/jre
java.library = /usr/lib/j2sdk1.4-sun/jre/lib/i386/libjava.so
java.library.path = /usr/lib/php4/20020429-zts
Apache2 yeniden başlatıldığında değişiklikler devreye girecektir. /var/www/info.php adlı bir dosya oluşturup içine aşağıdaki kodu yazıp http://localhost/info.php adresine bakarsanız, sayfanın altlarında Java bölümünü göreceksiniz. Bitti mi? Az kaldı...
<?php phpinfo(); ?>

java

DirectiveLocal ValueMaster Value
java.class.path/usr/lib/php4/20020429-zts/php_java.jar/usr/lib/php4/20020429-zts/php_java.jar
java.home/usr/lib/j2sdk1.4-sun/jre/usr/lib/j2sdk1.4-sun/jre
java.library/usr/lib/j2sdk1.4-sun/jre/lib/i386/libjava.so/usr/lib/j2sdk1.4-sun/jre/lib/i386/libjava.so
java.library.path/usr/lib/php4/20020429-zts/usr/lib/php4/20020429-zts
Önceki Üst Ana Başlık Sonraki
Fedora Core 3 için Başlangıç Java Destekli PHP Kurulumunun Sınanması
Bir Linux Kitaplığı Sayfası