PHP7 ve pear paketi

PHP7 kullanmaya karar verdiğinizde pear kurulumunda sıkıntı yaşabilirsiniz. Normalde kurulumu dotdeb repolarındaki php-pear paketiyle yapıyordum ama php7 kullandığımda bazı sorunlarla karşılaştım.

Örneğin şöyle bir hatayla karşılaşmanız mümkün:

guven@guven-debian:~$ pear
PHP Parse error:  syntax error, unexpected ‘new’ (T_NEW) in /usr/share/php/PEAR/Frontend.php on line 91

Bunun sebebi, yüklenen php-pear paketinin PHP4-5 için olması ve deprecated özellik içermesi. Satır 91 e baktığımızda

$obj = &new $uiclass;

Bir objenin referans olarak türetildiğini görüyoruz ki bunun ne için kullanıldığını pek anlamadım. Kısa bir araştırmayla 5.3 sürümünde deprecated özellikler arasına girdiğini gördüm: http://php.net/manual/tr/migration53.deprecated.php

Çözüm:

Pear paketini phar ile yüklemek. Güncel paket adresi işe şu şekilde: http://pear.php.net/go-pear.phar

İndirdiğiniz dosyayı “php go-pear.phar” komutuyla çalıştırın. Kurulum için bir iki soru soracak ve sisteminizde pear komutunu artık kullanabileceksiniz.

Ansible için görev komutu da yazdım, sizlerle paylaşayım.

tasks:
– name: “Download latest php-pear installer to /tmp”
get_url: url=http://pear.php.net/go-pear.phar dest=/tmp/go-pear.phar mode=0740

 

– name: “Copy go-pear installer script”
template: src=install-pear.expect
dest=/tmp/install-pear.expect
force=yes

 

– name: “eecute install-pear.expect script”
command: /tmp/install-pear.expect

 

install-pear.expect

#!/usr/bin/expect

spawn php /tmp/go-pear.phar

expect “1-11, ‘all’ or Enter to continue:”
send “r”
expect eof

spawn rm /tmp/go-pear.phar

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir