raspberry pi 3 - php 5.6

soume86
Messages : 64
Inscription : 06 mars 2012, 10:38

raspberry pi 3 - php 5.6

Message par soume86 » 22 février 2017, 18:21

Bonjour,

Je viens de déployer CentOS 7 sur mon raspberry, sans souci (CentOS-Userland-7-armv7hl-Minimal-1611-RaspberryPi3.img.xz).

Maintenant, je voudrai installer mon serveur web (apache, mariadb et php). J'ai réussi à installer apache et mysql, sans souci.

Le problème est que, pour des raisons de compatibilité avec mediawiki, j'ai besoin de la version 5.6 de php (php56) qui n'est pas dispo sur le repo de base.

J'ai essayé d'installer les repos remi ou epel, mais sans succès. Apparemment c'est impossible sur le raspberry PI 3.

Pouvez-vous m'aider à installer php56 sur mon raspberry svp?

Vous remerciant par avance,
Cordialement,

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: raspberry pi 3 - php 5.6

Message par Beta-Pictoris » 22 février 2017, 18:57

Tu dois compiler ta version de php.
J'avais compilé php 7 pour la raspberry pi 3 et sous centos 7 il y a quelques mois pour faire tourner owncloud plus rapidement. Je n'ai pas rencontré de difficulté particulière.

Je te donne les paquets à installer pour faire la compilation:

Code : Tout sélectionner

yum install httpd mariadb-server gcc gcc-c++ make bison openssl-devel bzip2-devel gd-devel libxml2-devel libicu-devel httpd-devel libcurl-devel xz-devel mariadb-devel
Et les options du ./configure:

Code : Tout sélectionner

./configure	--with-apxs2					\
		--with-openssl					\
		--with-zlib					\
		--with-bz2					\
		--enable-calendar				\
		--with-curl					\
		--enable-ftp					\
		--with-gd					\
		--enable-intl					\
		--enable-mbstring				\
		--enable-zip					\
		--with-pear					\
		--with-jpeg-dir=/usr/lib			\
		--with-png-dir=/usr/lib				\
		--with-xpm-dir=/usr/lib				\
		--with-freetype-dir=/usr/lib			\
		--with-mysqli=mysqlnd 				\
		--with-pdo-mysql=mysqlnd			\
		--enable-mysqlnd				\
		--with-mysql-sock=/var/lib/mysql/mysql.sock

Avatar de l’utilisateur
remi
Messages : 220
Inscription : 20 octobre 2009, 07:10
Localisation : Champagne...
Contact :

Re: raspberry pi 3 - php 5.6

Message par remi » 22 février 2017, 19:26

Solution propre, télécharger le RPM source de PHP 5.6 (par exemple celui de mon dépôt) et le recompiler (rpmbuild ou mock)

Solution alternative, m'offrir une machine aarch64 assez puissante que je puisse faire les builds arm et les mettre sur mon dépôt ;)
Contributeur EPEL et CentOS SCLo SIG
Des RPM pour CentOS sur https://rpms.remirepo.net

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: raspberry pi 3 - php 5.6

Message par Beta-Pictoris » 22 février 2017, 21:14

remi a écrit :Solution alternative, m'offrir une machine aarch64 assez puissante que je puisse faire les builds arm et les mettre sur mon dépôt ;)
Une petite machine performante à base de soc arm, ça va être difficile à trouver. Par contre, la cross compilation avec distcc, entre une raspberry pi 3 et un pc performant, ça marche très bien. :)

Est-ce que tu pourras, aussi, compiler tous les paquets epel pour la raspberry pi 3 ? Ça m'arrangerait. :D

soume86
Messages : 64
Inscription : 06 mars 2012, 10:38

Re: raspberry pi 3 - php 5.6

Message par soume86 » 22 février 2017, 22:36

Merci pour votre retour, mais cela ne fonctionne pas. Je l'avais essayé d'ailleurs, mais j'ai toujours la même erreur.

Code : Tout sélectionner

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #53437 DateInterval unserialize bad data, 32 bit [ext/date/tests/bug53437_var3.phpt]
IntlDateFormatter, calendars and time zone [ext/intl/tests/dateformat_calendars.phpt]
IntlDateFormatter: several forms of the calendar arg [ext/intl/tests/dateformat_create_cal_arg.phpt]
datefmt_format_code() [ext/intl/tests/dateformat_format.phpt]
IntlDateFormatter::formatObject(): IntlCalendar tests [ext/intl/tests/dateformat_formatObject_calendar.phpt]
IntlDateFormatter::formatObject(): DateTime tests [ext/intl/tests/dateformat_formatObject_datetime.phpt]
datefmt_format_code() and datefmt_parse_code() [ext/intl/tests/dateformat_format_parse.phpt]
IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject() [ext/intl/tests/dateformat_get_set_calendar.phpt]
IntlDateFormatter: get/setTimeZone() [ext/intl/tests/dateformat_get_set_timezone.phpt]
datefmt_set_timezone_id_code() icu >= 4.8 [ext/intl/tests/dateformat_set_timezone_id2.phpt]
IntlDateFormatter: several forms of the timezone arg [ext/intl/tests/dateformat_timezone_arg_variations.phpt]
numfmt_get_locale() [ext/intl/tests/formatter_get_locale.phpt]
locale_filter_matches.phpt() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_filter_matches2.phpt]
locale_get_display_name() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_get_display_name2.phpt]
locale_get_display_region() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_get_display_region2.phpt]
locale_lookup.phpt() [ext/intl/tests/locale_lookup.phpt]
MessageFormat accepts IntlCalendar args [ext/intl/tests/msgfmt_format_intlcalendar.phpt]
ResourceBundle constructor bundle accepts NULL for first two arguments [ext/intl/tests/resourcebundle_null_mandatory_args.phpt]
IntlTimeZone::getDisplayName(): type parameter (ICU >= 49 && ICU < 51.2) [ext/intl/tests/timezone_getDisplayName_variant2-49+.phpt]
IntlTimeZone::getErrorCode/Message(): basic test [ext/intl/tests/timezone_getErrorCodeMessage_basic.phpt]
IntlTimeZone::getOffset(): errors [ext/intl/tests/timezone_getOffset_error.phpt]
Testing xpath() with invalid XML [ext/simplexml/tests/SimpleXMLElement_xpath_1.phpt]
Bug #64146 (serialize incorrectly saving objects when they are cloned) [ext/standard/tests/serialize/bug64146.phpt]
=====================================================================

=====================================================================
WARNED TEST SUMMARY
---------------------------------------------------------------------
zend multibyte (2) [ext/mbstring/tests/zend_multibyte-02.phpt] (warn: XFAIL section but test passes)
zend multibyte (6) [ext/mbstring/tests/zend_multibyte-06.phpt] (warn: XFAIL section but test passes)
zend multibyte (8) [ext/mbstring/tests/zend_multibyte-08.phpt] (warn: XFAIL section but test passes)
zend multibyte (10) [ext/mbstring/tests/zend_multibyte-10.phpt] (warn: XFAIL section but test passes)
zend multibyte (11) [ext/mbstring/tests/zend_multibyte-11.phpt] (warn: XFAIL section but test passes)
Phar: bug #69958: Segfault in Phar::convertToData on invalid file [ext/phar/tests/bug69958.phpt] (warn: XFAIL section but test passes)
=====================================================================

You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.	You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: 

Avez-vous des idées?

Question subsidiaire :

Je pense que je serai obligé d’installer une VM sur mon mac pour compiler les paquets car j’ai pas mal de projet avec mon raspy et les compiler sur ce dernier est infernal (temps d’attente trop long).

Pourriez-vous m’orienter plus vers la cross compilation sur un centos 7 que je puisse compiler mes paquets cet dernier pour mon raspberry.

J’ai regardé un peu, mais je n’ai pas trop compris.

Vous remerciant par avance,

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: raspberry pi 3 - php 5.6

Message par Beta-Pictoris » 22 février 2017, 23:19

soume86 a écrit :Merci pour votre retour, mais cela ne fonctionne pas. Je l'avais essayé d'ailleurs, mais j'ai toujours la même erreur.

Code : Tout sélectionner

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #53437 DateInterval unserialize bad data, 32 bit [ext/date/tests/bug53437_var3.phpt]
IntlDateFormatter, calendars and time zone [ext/intl/tests/dateformat_calendars.phpt]
IntlDateFormatter: several forms of the calendar arg [ext/intl/tests/dateformat_create_cal_arg.phpt]
datefmt_format_code() [ext/intl/tests/dateformat_format.phpt]
IntlDateFormatter::formatObject(): IntlCalendar tests [ext/intl/tests/dateformat_formatObject_calendar.phpt]
IntlDateFormatter::formatObject(): DateTime tests [ext/intl/tests/dateformat_formatObject_datetime.phpt]
datefmt_format_code() and datefmt_parse_code() [ext/intl/tests/dateformat_format_parse.phpt]
IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject() [ext/intl/tests/dateformat_get_set_calendar.phpt]
IntlDateFormatter: get/setTimeZone() [ext/intl/tests/dateformat_get_set_timezone.phpt]
datefmt_set_timezone_id_code() icu >= 4.8 [ext/intl/tests/dateformat_set_timezone_id2.phpt]
IntlDateFormatter: several forms of the timezone arg [ext/intl/tests/dateformat_timezone_arg_variations.phpt]
numfmt_get_locale() [ext/intl/tests/formatter_get_locale.phpt]
locale_filter_matches.phpt() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_filter_matches2.phpt]
locale_get_display_name() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_get_display_name2.phpt]
locale_get_display_region() icu >= 4.8 && icu < 51.2 [ext/intl/tests/locale_get_display_region2.phpt]
locale_lookup.phpt() [ext/intl/tests/locale_lookup.phpt]
MessageFormat accepts IntlCalendar args [ext/intl/tests/msgfmt_format_intlcalendar.phpt]
ResourceBundle constructor bundle accepts NULL for first two arguments [ext/intl/tests/resourcebundle_null_mandatory_args.phpt]
IntlTimeZone::getDisplayName(): type parameter (ICU >= 49 && ICU < 51.2) [ext/intl/tests/timezone_getDisplayName_variant2-49+.phpt]
IntlTimeZone::getErrorCode/Message(): basic test [ext/intl/tests/timezone_getErrorCodeMessage_basic.phpt]
IntlTimeZone::getOffset(): errors [ext/intl/tests/timezone_getOffset_error.phpt]
Testing xpath() with invalid XML [ext/simplexml/tests/SimpleXMLElement_xpath_1.phpt]
Bug #64146 (serialize incorrectly saving objects when they are cloned) [ext/standard/tests/serialize/bug64146.phpt]
=====================================================================

=====================================================================
WARNED TEST SUMMARY
---------------------------------------------------------------------
zend multibyte (2) [ext/mbstring/tests/zend_multibyte-02.phpt] (warn: XFAIL section but test passes)
zend multibyte (6) [ext/mbstring/tests/zend_multibyte-06.phpt] (warn: XFAIL section but test passes)
zend multibyte (8) [ext/mbstring/tests/zend_multibyte-08.phpt] (warn: XFAIL section but test passes)
zend multibyte (10) [ext/mbstring/tests/zend_multibyte-10.phpt] (warn: XFAIL section but test passes)
zend multibyte (11) [ext/mbstring/tests/zend_multibyte-11.phpt] (warn: XFAIL section but test passes)
Phar: bug #69958: Segfault in Phar::convertToData on invalid file [ext/phar/tests/bug69958.phpt] (warn: XFAIL section but test passes)
=====================================================================

You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.	You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: 
Mais, tu ne dis pas ce que tu essayes de faire ? Pour info, je viens de recompiler, pour voir, php 7.1.2 sur raspberry pi 3, sans problème.
soume86 a écrit : Pourriez-vous m’orienter plus vers la cross compilation sur un centos 7 que je puisse compiler mes paquets cet dernier pour mon raspberry.
En gros, la raspberry pi 3, c'est le maître, et les autres machines sont des esclaves. Par contre, j'ai fait ça sous archlinux: https://wiki.archlinux.org/index.php/Distcc
Ne pas oublier d'installer la toolchain ARMv7l hard. Je l'avais installée dans /opt avec les bonnes permissions.

soume86
Messages : 64
Inscription : 06 mars 2012, 10:38

Re: raspberry pi 3 - php 5.6

Message par soume86 » 22 février 2017, 23:29

J'ai fait comme tu m'as dit :
[root@raspy php-5.6.12]# ./configure --with-apxs2 --with-openss --with-zlib --with-bz2 --enable-calendar --with-curl --enable-ftp --with-gd --enable-intl --enable-mbstring --enable-zip --with-pear --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-xpm-dir=/usr/lib --with-freetype-dir=/usr/lib --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock
[root@raspy php-5.6.12]# make
[root@raspy php-5.6.12]# make test
et j'ai le message d'erreur cité dans mon post précédent.

Pour info, je fais les manips depuis le raspberry.

Des idées?

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: raspberry pi 3 - php 5.6

Message par Beta-Pictoris » 23 février 2017, 08:45

Il y a quelques bugs. On ne peut pas l'éviter: http://www.serverphorums.com/read.php?8 ... msg-259960
Tu peux, quand-même, installer php (make install en root).

soume86
Messages : 64
Inscription : 06 mars 2012, 10:38

Re: raspberry pi 3 - php 5.6

Message par soume86 » 23 février 2017, 10:37

Bonjour,

Oui, je l'ai bien installé, mais cela ne fonctionne pas.

En effet, j'ai créé un fichier 1.php dans /var/www/html contenant:
<?php
phpinfo();
?>
Et quand j'appelle cette page http://localhost/1.php, le code php n'est pas interprété. Il m'affiche le contenu du fichier 1.php.

Pourtant j'ai ajouté le path, dans le fichier php.ini :
include_path = "/usr/local/lib/php"
Des pistes??

Vous remerciant,

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: raspberry pi 3 - php 5.6

Message par Beta-Pictoris » 23 février 2017, 19:19

Tu dois configurer apache pour qu'il prenne en charge cette nouvelle version de php.
Je te montre le contenu du fichier /etc/httpd/conf.d/php.conf qui est fourni avec le paquet php 5.4:

Code : Tout sélectionner

#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

#
# Allow php to handle Multiviews
#
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
#    SetHandler application/x-httpd-php-source
#</FilesMatch>

#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"
Et, aussi, le contenu du fichier /etc/httpd/conf.modules.d/10-php.conf que j'ai modifié:

Code : Tout sélectionner

#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
  LoadModule php7_module modules/libphp7.so
</IfModule>
A noter, cette bibliothèque libphp7.so est installée dans /usr/lib/httpd/modules/ alors que le reste de php est installé dans /usr/local.

Mets, aussi, à jour ta variable PATH pour qu'il trouve les programmes se trouvant dans /usr/local/bin.

Répondre