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 eofspawn rm /tmp/go-pear.phar