Tokens — Page 33

PHP'ye yeni modül (extension/module) derlemek

Şu aralar symfony’ye çalışıyorum. Symfony bir web geliştirme framework’ü yani size çeşitli kütüphaneler, programlar sunarak web projelerinize kolaylıklar sağlıyor. Symfony anasayfasında 24 saatlik bir demo proje var, ismi Jobeet. Bununla uğraşırken şöyle bir problemle karşılaştım:

$ symfony propel-build-model
>> schema converting "~/jobeet/config/schema.yml" to XML
>> schema putting ~/jobeet/config/generated-schema.xml
>> propel Running "om" phing task
[propel-om] Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.
>> file- ~/jobeet/config/generated-schema.xml
>> autoload reloading autoloading


PHP için bir eklentinin yokluğundan yakınıyor. “php -m” ile var olan modüllere baktığımda xsl modülünü bulamadım. İnternette biraz araştırdığımda PHP sayfasında modülün PHP ilk kurulurken nasıl derleme seçenekleri arasına alınabileceği yazıyordu. Tüm PHP’yi tekrar derlemek istemedim doğal olarak ve daha hızlı bir yol buldum. Bu teknik, tüm PHP modülleri için uygulanabilir.

Öncelikle apt-get kullanarak php-dev paketini kurmamız gerekli:

# apt-get install php5-dev

Bundan sonra bir yerlerden php kaynak kodunu indirmeliyiz. Ben Fransa’daki bir yansıyı kullandım:

$ wget http://tr.php.net/get/php-5.2.8.tar.bz2/from/fr.php.net/mirror

PHP kaynak kodlarını indirirken dikkat etmemiz gereken noktalardan birisi kendi PHP sürümümüze yakın bir kaynak paketini indirmek olmalı. Örneğin benim sürümüm 5.2.6, 5.2 dalından bir sürüm işimi görür. Daha eski bir sürümü indirmenizi (örneğin 5.1 dalından) veya çok daha yeni bir sürümü (çıkacak olan 5.3 dalı gibi) önermiyorum. Yoksa uyumluluk sorunları yaşayabilirsiniz.

İndirme bittikten sonra paketi açın:

$ bunzip2 php-5.2.8.tar.bz2

ve

$ tar xvf php-5.2.8.tar

Bundan sonra PHP kaynak kodları içinde istediğimiz modüle girip derleyeceğiz. Benim için bu xsl modülü:

$ cd php-5.2.8/ext/xsl/
$ phpize
$ ./configure
$ make

Evet artık modülümüz derlendi. Yazılan son satırlar belki şuna benziyordur:

Libraries have been installed in:
/ambar1/progz/php-5.2.8/ext/xsl/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Bu açıklamadan da anlaşılacağı gibi derlenmiş kütüphanelerimiz modules/ dizininde.

$ ls modules/
xsl.la xsl.so

Bundan sonra yapmamız gerekenler bu modülü düzgün bir yerlere kopyalayıp php.ini dosyasını değiştirmek (burada root olmanız gerekiyor):

# cp modules/xsl.so /usr/lib/php5/20060613+lfs/

php.ini dosyasında önce modül dizinini tanımlıyoruz:

extension_dir = "/usr/lib/php5/20060613+lfs/"

Sonra da bu modülün yüklenmesini:

extension=xsl.so


Bu kadar, her şey bitti. Eğer bir web sunucusu üzerinden PHP’yi ve bu modülü kullanıyorsanız tekrar başlatmanız gerekecek. Benim için bu sunucu apache:

# apache2ctl restart

Bilmeniz gereken bir nokta php.ini dosyasıyla ilgili. PHP için iki farklı php.ini dosyası olabiliyor. Bunlardan biri komut satırından çalıştırılan php interpreter için, diğeri ise apache tarafından kullanılan php çeviricisi için varlar. Yani eğer komut satırından php kullanacaksanız, mesela belirli betikler yazmışsanız “cli” (command line interpreter) ayar dosyasını değiştirmeniz gerekiyor. Bendeki ayar dosyaları şöyle:

# locate php.ini
/etc/php4/apache2/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
/usr/share/doc/php5-common/examples/php.ini-dist
/usr/share/doc/php5-common/examples/php.ini-paranoid
/usr/share/doc/php5-common/examples/php.ini-recommended
/usr/share/php5/php.ini-dist
/usr/share/php5/php.ini-dist.cli


İlk iki dosya apache için (php4 ve php5 için ayrı ayrı) ve 3. ayar dosyası da komut satırından çalıştırılan PHP için. Tabii Debian kullanmıyorsanız (sahi neden Debian kullanmıyorsunuz :)) dosyalarınızın yerleri de farklı olacaktır.

Kolay gelsin.


[ thanks to Mattias Geniar for the great article. ]

Genmaicha


Taken by chcharlie

Caponlar pirinçten her şeyi yapabilmeleriyle ünlüler. Genmaicha da kavrulmuş pirinç ve yeşil çay ile hazırlanan bir çeşit çay. Bu konudaki ünlü markalardan biri Yamamotoyama, Gladys Hanıma bana bundan gönderdiği için buradan teşekkür etmek istiyorum. Kohei de Japonya’yı hatırladı :) Hımm, yarın annesi koli gönderecekmiş, içine bunlardan da koymasını söyleyecek yani biraz daha içebileceğiz belki. Güzel çay vesselam. Herhalde pirinç olmasa tüm Japonlar harakiri yaparlardı :)


{ çay demişken, Hint Darjeeling çayı, bal, süt, zencefil ve tarçın’dan yapılan chai denemenizi de öneririm. benim favorim bu. }


{ ha bir de hemen hemen tüm dillerde çay aynı kelime ile ifade ediliyor. Japonlar yalnız ça şeklinde söylüyorlar. Bir de Japonya’da çay istediğinizde getirilen çay yeşil çaymış, bizim bildiğimiz çaydan istemek için kırmızı çay istiyormuşsunuz. Bu gereksiz bilgiyi de vererek beyninizi doldurayım. Yolunuz Japonya’ya düşerse kullanırsınız :P }

Hangi Debian mimarisi size uygun?

Sunucu sistemler için Debian en iyi dağıtımlardan birisi. Debian sürümlerinden stable sürümünü kararlı olması gereken sunucular için, testing’i normal kullanıcılar için öneriyorum, eğer manyaksanız unstable kurabilirsiniz. Sürüm meselesini geçtikten sonra karşımıza çıkan sorun mimari sorunu. Yani IA64, AMD64, i386, PowerPC gibi bir sürü sürümü olan Debian’ın hangisi size uygun?

Bunu belirleyecek olan işlemcinizin kullandığı komut kümesi. AMD64 ve IA64 aslında insanları yanıltabilecek bir isimlendirme. AMD64 = x86-64 çünkü AMD’nin geliştirdiği 64 bitlik komut kümesi (instruction set) Intel tarafından uygulandı ve Intel 64 adını aldı. Ancak bilgisayarcılar halen ilk geliştirici olan AMD’nin ismini kullanarak her iki platforma da AMD64 diyorlar. x86-64 de bu platform için yaygın isimlerden. Peki o zaman IA64 nereden çıktı diyebilirsiniz. IA64 ise tamamen farklı bir platform. Intel’in Yüksek Başarımlı Hesaplamalar için vs. kullandığı biraz daha pahalı bir sistem. IA64’ün Intel tarafından kullanılan adı Itanium ve isminden de anlaşılacağı gibi Itanium işlemciler tarafından kullanılıyorlar. PowerPC’ye gelecek olursam, bu komut kümesi ise genellikle eski Apple marka ürünlerdeki işlemciler tarafından kullanılıyor. Burada genellikle diyorum çünkü Apple’ın birçok ürünü artık Intel işlemcileri kullanıyor. Bu konuda çok fazla bilgim olmadığını da söylemeliyim. ARM gibi platformları ise bilmiyorsanız dikkate almanıza gerek yok, gömülü sistemlerle uğraşıyorsanız zaten ne istediğinizi biliyorsunuz. Benim ARM anlatmama gerek yok.

Özet olarak:
Itanium işlemcileri için: IA64 (tüm Itaniumlar 64 bit)
Diğer Intel işlemcileri için: eğer 64 bit ise AMD64 (Xeon, Core2’ler, Centrino’ların 64’lükleri)
32 Bitlik AMD ve Intel işlemcileri için: i386.

SSH Client Freezing

If your ssh client freezes after some inactive time, try adding
ServerAliveInterval 300
to your ssh_config.