PHP7 RC6 na Debian 8 Jessie – testujemy!

php7-logo

Programiści PHP obecnie pracują nad nową główną wersją PHP, nazwaną PHP 7. Wśród twórców były dyskusje, czy następna główna wersja PHP powinna nazywać się PHP 6, czy PHP 7. Chociaż eksperymentalna wersja PHP 6 unicode nie była nigdy wydana, wiele artykułów i książek odwoływało się do starej nazwy PHP 6. Mogłoby to prowadzić do nieporozumień, gdyby nowe wydanie również nazywało się PHP 6. W wyniku głosowania wybrano nazwę PHP 7.

Bazą PHP 7 jest eksperymentalna gałąź, oryginalnie nazwana PHPNG (PHP Next Generation), mająca na celu optymalizację wydajności PHP przez refaktoring Zend Engine, zachowując niemal całkowitą zgodność języka. Począwszy od 14 lipca 2014 r., główny punkt odniesienia testowania wydajności PHPNG, którym jest WordPress, wskazuje niemal 100% wzrost wydajności. Zmiany wprowadzone w PHPNG powinny również ułatwiać implementowanie usprawnień wydajności w przyszłości, ponieważ bardziej zwarte struktury danych oraz inne zmiany uważane są za lepiej nadające się do pomyślnej migracji do kompilacji Just-in-time.

PHP 7 będzie zawierać ulepszoną składnię zmiennych, wewnętrznie spójną i kompletną, co jest od dawna problemem w PHP. Pozwoli to na użycie operatorów ->, [], (), {} i :: z dowolnymi poprawnymi wyrażeniami po lewej

Źródło: Wikipedia.pl

Instalację przeprowadzamy na Debianie 8. Domyślnie z PHP 7 instaluje się Apache2 🙁 czego nie chcemy. (ja nie chce;] ).

Uwaga! -> phpMyAdmin z repozytoriów Debiana 8 nie działa z PHP7 jeszcze, przedstawię wam instalacje phpMyAdmina z repozytoriów sid

1. Przygotowanie:

wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
apt-get update; apt-get install curl apt-transport-https software-properties-common  -y
echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
apt-get update

2. Niezbędne pakiety ( PHP 7 + wymagane do instalacji NGINX )

apt-get install php-fpm php php-mysql php-curl php-gd php-intl php-seclib php-pear php-imap php-pspell php-recode php-snmp php-tidy php-soap fontconfig-config geoip-database libgeoip1 libluajit-5.1-2 libluajit-5.1-common fonts-dejavu-core libfontconfig1 libgd3 libjbig0 liblua5.1-0 libperl5.20 libtiff5 libxpm4 libxslt1.1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal libvpx1 libalgorithm-c3-perl libarchive-extract-perl libcgi-fast-perl libcgi-pm-perl libclass-c3-perl libclass-c3-xs-perl libcpan-meta-perl libdata-optlist-perl libdata-section-perl libfcgi-perl liblog-message-perl liblog-message-simple-perl libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmro-compat-perl libpackage-constants-perl libparams-util-perl libpod-latex-perl libpod-readme-perl libregexp-common-perl libsoftware-license-perl libsub-exporter-perl libsub-install-perl libterm-ui-perl libtext-soundex-perl libtext-template-perl perl perl-modules rename -y  --force-yes

3. Instalacja NGINX i usunięcie Apache/2

killall apache2; apt-get purge apache2*
wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.6-pagespeed-vts-linuxiarz.pl/nginx-common_1.9.6-1-linuxiarz.pl_all.deb 
wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.6-pagespeed-vts-linuxiarz.pl/nginx-extras_1.9.6-1-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.6-pagespeed-vts-linuxiarz.pl/nginx_1.9.6-1-linuxiarz.pl_all.deb
dpkg -i nginx*.deb
rm /etc/nginx/php.conf ; wget http://pliki.linuxiarz.pl/11-2015/php.conf -O /etc/nginx/php.conf
rm /usr/share/nginx/html/*
echo '<?php phpinfo(); ?>' >> /usr/share/nginx/html/info.php
systemctl start nginx.service

4. Prekonfigurowana przeze mnie konfiguracja PHP7:

rm /etc/php/7.0/fpm/php.ini ; wget http://pliki.linuxiarz.pl/11-2015/php7.ini -O /etc/php/7.0/fpm/php.ini
systemctl restart php7.0-fpm.service

5. Instalacja bazy danych: (na przykładzie MariaDB 10.1 -> więcej )

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
echo 'deb http://mariadb.kisiek.net/repo/10.1/debian jessie main' >> /etc/apt/sources.list.d/mariadb.list
apt-get update
apt-get install mariadb-server -y  --force-yes
rm /etc/mysql/my.cnf; wget http://pliki.linuxiarz.pl/08-2015/my.cnf -O /etc/mysql/my.cnf
systemctl restart mysql

6. Instalacja phpMyAdmin:

apt-get install phpmyadmin
cp /etc/apt/sources.list /etc/apt/sources.list.backup
echo 'deb ftp://ftp.pl.debian.org/debian/ sid main non-free contrib' >> /etc/apt/sources.list
wget http://pliki.linuxiarz.pl/11-2015/preferences -O /etc/apt/preferences
apt-get update
apt-get -t sid download phpmyadmin
dpkg -i phpmyadmin*.deb
ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin
mkdir -p /var/lib/php/sessions/ ; chmod -R 777 /var/lib/php/sessions/

7. Przywrócenie wykonanej kopii plików z lista repozytoriów (wyłączenie repo sid)

rm /etc/apt/sources.list; mv /etc/apt/sources.list.backup /etc/apt/sources.list

8. Zatrzymanie modyfikowania zainstalowanych pakietów

apt-mark  hold php-* phpmyadmin

9. Usunięcie Apache2 – w lekko brzydki sposób – ale przynajmniej nie zepsuje reszty

rm -R  /usr/sbin/apache* /etc/apache2/ /etc/init.d/apache2

10. Uruchomienie przy starcie systemu:

update-rc.d nginx defaults
update-rc.d mysql defaults
update-rc.d php7.0-fpm defaults

Efekt – co prawda przy logowaniu wyświetla się masa błędów, m.in brak php-gettext (mimo jego poprawnej instalacji) – to phpMyAdmin działa.
Nie polecam tego rozwiązania produkcyjnie (chodzi mi o phpMyAdmin) – z resztą problemów nie zauważyłem.

php7