[APACHE] Le module libphp7.so n'est pas présent (résolu)

Applications, problèmes de configuration réseau
Répondre
stephan08
Daikyu
Messages : 93
Inscription : jeu. 19 nov. 2015, 23:18

[APACHE] Le module libphp7.so n'est pas présent (résolu)

Message par stephan08 »

Bonjour,

J'ai installé Apache sour Archlinux, par contre je ne trouve pas la libphp7.so pour PHP 7.

Dans le fichier /etc/php/php.ini, j'ai décommenté ces deux lignes:

Code : Tout sélectionner

extension=mysqli.so 
extension=pdo_mysql.so
Dans le fichier /etc/httpd/conf/httpd.conf, j'ai respectivement décommenté la première ligne et ajouté les 2 autres lignes:

Code : Tout sélectionner

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# Load php7 module
LoadModule php7_module modules/libphp7.so

# PHP settings
Include conf/extra/php7_module.conf
Du coup, lorsque je lance

Code : Tout sélectionner

systemctl start httpd
systemctl status httpd
J'obtiens ce status:

Code : Tout sélectionner

● httpd.service - Apache Web Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2017-12-25 20:36:28 CET; 2s ago
  Process: 7358 ExecStart=/usr/bin/httpd -k start -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 7358 (code=exited, status=1/FAILURE)

déc. 25 20:36:28 DeepakPc systemd[1]: Started Apache Web Server.
déc. 25 20:36:28 DeepakPc systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
déc. 25 20:36:28 DeepakPc systemd[1]: httpd.service: Failed with result 'exit-code'.
déc. 25 20:36:28 DeepakPc httpd[7358]: httpd: Syntax error on line 187 of /etc/httpd/conf/httpd.conf: Cannot load modules/libphp7.so into server: /etc/httpd/modules/libphp7.so: cannot open shared object file: No such file or directory
Cela veut dire que le fichier libphp7.so n'éxiste pas. Effectivement, il n'est pas présent dans le dossier /etc/httpd/modules. Pourquoi n'existe t'il pas?
De même, pourquoi dans le dossier, je n'ai pas de lib antérieur à php7.

Je vous remercie par avance,
Dernière modification par stephan08 le dim. 31 déc. 2017, 11:29, modifié 1 fois.
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par waitnsea »

stephan08 a écrit : lun. 25 déc. 2017, 19:49 le fichier libphp7.so n'éxiste pas. Effectivement, il n'est pas présent dans le dossier /etc/httpd/modules. Du coup, où dois je la télécharger afin de la mettre dans le dossier?
Bonjour,

Code : Tout sélectionner

$ pkgfile libphp7.so
    extra/php-apache
    extra/php-embed
$ locate  libphp7.so
    /usr/lib/httpd/modules/libphp7.so
...si ça peut t'aider
Avatar de l’utilisateur
floflo77890
Maître du Kyudo
Messages : 1266
Inscription : lun. 29 juil. 2013, 21:05
Localisation : île de france

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par floflo77890 »

Visiblement tu as une erreur de syntaxe à la ligne 187 du fichier de configuration /etc/httpd/conf/httpd.conf tente déja de savoir quelle est cette erreur et une fois trouvé de renlancer le service apache.
stephan08
Daikyu
Messages : 93
Inscription : jeu. 19 nov. 2015, 23:18

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par stephan08 »

Bonjiour,

@waitnsea
waitnsea a écrit : lun. 25 déc. 2017, 20:04
stephan08 a écrit : lun. 25 déc. 2017, 19:49 le fichier libphp7.so n'éxiste pas. Effectivement, il n'est pas présent dans le dossier /etc/httpd/modules. Du coup, où dois je la télécharger afin de la mettre dans le dossier?
Bonjour,

Code : Tout sélectionner

$ pkgfile libphp7.so
    extra/php-apache
    extra/php-embed
$ locate  libphp7.so
    /usr/lib/httpd/modules/libphp7.so
...si ça peut t'aider
Du coup, j'ai installé pkgfile et j'ai lancé:

Code : Tout sélectionner

pkgfile --update
pkgfile libphp7.so
Et cela, m'a donné les deux packages que t'as cité. Du coup, j'ai installé php-apache et puis je me suis rendu compte qu'il était bien présent dans le dossier /usr/lib/httpd/modules.

Et la commande:

Code : Tout sélectionner

locate libphp7.so
me donne bien le chemin /usr/lib/httpd/modules/libphp7.so

Maintenant, le lancement d'apache ne me donne plus d'erreur.

@floflo77890

A la ligne 187, j'avais:
LoadModule php7_module modules/libphp7.so
Et le fichier n'était présent avant. C'est pourquoi cela ne marchait pas.

Par contre, j'ai encore un problème. Le serveur apache tourne. A priori, il prend donc en compte les fichiers php maintenant. Dans le dossier /srv/http/test, j'ai un fichier essai.php. Pour linstant, essai.php ne contient que:

Code : Tout sélectionner

<?php
echo "test php";
Par contre, rien ne s'affiche lorsque je vais sur la page essai.php. Comment résoudre ce problème?
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par FoolEcho »

stephan08 a écrit : lun. 25 déc. 2017, 23:36 Par contre, j'ai encore un problème. Le serveur apache tourne. A priori, il prend donc en compte les fichiers php maintenant. Dans le dossier /srv/http/test, j'ai un fichier essai.php. Pour linstant, essai.php ne contient que:

Code : Tout sélectionner

<?php
echo "test php";
Par contre, rien ne s'affiche lorsque je vais sur la page essai.php. Comment résoudre ce problème?
En consultant les logs. Apache par défaut les enregistre dans /var/log/httpd/ (régle aussi les infos à tracer dans /etc/php/php.ini ; il faut relancer le serveur ).
«The following statement is not true. The previous statement is true.» :nage:
stephan08
Daikyu
Messages : 93
Inscription : jeu. 19 nov. 2015, 23:18

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par stephan08 »

J'ai vérifié le fichier /etc/php/php.ini, et j'ai bien:

Code : Tout sélectionner

log_errors = On
Et j'ai ajouté dans ce fichier la ligne suivante pour les erreurs php:

Code : Tout sélectionner

error_log = /var/log/php/errors/php_error.log
Du coup, j'ai également crée les répertoires php et errors qui vont bien dans /var/log/.

Jai relancé le service apache.

J'ai bien vérifier le fichier /etc/httpd/conf/httpd.conf, et j'ai bien :

Code : Tout sélectionner

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "/var/log/httpd/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "/var/log/httpd/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "/var/log/httpd/access_log" combined
</IfModule>
En regardant les logs dans /var/log/httpd, j'ai ces fichiers:

Code : Tout sélectionner

total 16
-rw-r--r-- 1 root root    0 25 déc.  16:09 access_log
-rw-r--r-- 1 root root    0 17 déc.  00:00 access_log.1
-rw-r--r-- 1 root root 6189 15 déc.  12:37 access_log.2
-rw-r--r-- 1 root root  640 26 déc.  10:34 error_log
-rw-r--r-- 1 root root    0 17 déc.  00:00 error_log.1
-rw-r--r-- 1 root rot  846 15 déc.  12:48 error_log.2
Du coup, j'ai regardé le contenu de l'access_log.2 et j'obtiens:

Code : Tout sélectionner

::1 - - [15/Dec/2017:12:35:43 +0100] "GET /lecturecd/essai.php HTTP/1.1" 200 26
::1 - - [15/Dec/2017:12:37:33 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:35 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:36 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:37 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:37 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:38 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
::1 - - [15/Dec/2017:12:37:39 +0100] "GET /lecturecd/essai.php HTTP/1.1" 304 -
Mais ce sont des anciennes logs puisque j'ai renommé mon dossier test. Du coup, effectivement ça ne log pas correctement bien que dans le php.ini, j'ai bien log_errors = On. Peut être qu'il faille ajouter autre chose dans le php.ini.

Sinon, le fichier /var/log/php/errors/php_error.log n'est pas crée.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par FoolEcho »

Fais-le sans le error_log dans le php.ini.
«The following statement is not true. The previous statement is true.» :nage:
stephan08
Daikyu
Messages : 93
Inscription : jeu. 19 nov. 2015, 23:18

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par stephan08 »

Bonjour,

Je n'avais pas mis le bon lien, c'est pourquoi cela ne fonctionnait pas. Maintenant, cela fonctionne parfaitement.

En allant sur: http://localhost/test.php avec test.php ayant pour contenu:

Code : Tout sélectionner

<?php
phpinfo();
j'obtiens bien la page avec la version de php etc...

Par contre, je suis allé sur AUR afin de réccupérer le package mcrypt.
https://aur.archlinux.org/packages/php70-mcrypt/

J'ai cloné le lien dans mon home via un:

Code : Tout sélectionner

git clone https://aur.archlinux.org/php70.git
Ensuite, je lance

Code : Tout sélectionner

makepkg -s
Et je tombe sur cette erreur:

Code : Tout sélectionner

==> ERREUR : Vous n’avez pas les permissions nécessaires (accès en écriture) pour créer les paquets dans /home/deepak/programmes/php70.
    Abandon...

==> ERREUR : An unknown error has occurred. Exiting...
Le makepkg, je le fais dans
/home/deepak/programmes/php70
Donc cela devrait marcher.

Et dans ce dossier, le lancement de la commande

Code : Tout sélectionner

ls -l
me donne

Code : Tout sélectionner

total 40
-rw-r--r-- 1 root root   317 31 déc.  00:25 apache.conf
-rw-r--r-- 1 root root   501 31 déc.  00:25 apache.patch
-rwxr-xr-x 1 root root  2753 31 déc.  00:25 generate_patches
-rw-r--r-- 1 root root  2959 31 déc.  00:25 php-fpm.patch
-rw-r--r-- 1 root root    30 31 déc.  00:25 php-fpm.tmpfiles
-rw-r--r-- 1 root root  2650 31 déc.  00:25 php.ini.patch
-rw-r--r-- 1 root root 12349 31 déc.  00:25 PKGBUILD
Le fait que ces fichiers appartienne à root provienne à priori du fait que je fais un git clone en étant root. Du coup, ici c'est root qui est propriétaire des fichiers contenu dans le dossier php70. Le makepkg doit à priori être effectué via un sudo et non en étant root, j'ai également essayé un:

Code : Tout sélectionner

sudo makepkg -s
et j'obtiens le message suivant:

Code : Tout sélectionner

[sudo] Mot de passe de deepak : 
deepak n'apparaît pas dans le fichier sudoers. Cet événement sera signalé.
De même, je sais que makepkg n'est pas à utilisé en tant que root. De toute manière, j'ai essayé et je tombe sur cette erreur:

Code : Tout sélectionner

==> ERREUR : Lancer makepkg en tant que root n'est pas autorisé car cela pourrait
causer des dommages catastrophiques et permanents à votre système.

==> ERREUR : An unknown error has occurred. Exiting...
Donc, je comprends qu'il faille que je mettre mon user dans le groupe sudoers. Mais, je préfère pas continuer car j'ai trouvé un post similaire et il était déconseillé par oktoberfest de modifier les droits etc...: viewtopic.php?t=18380

S'il ne faille pas utiliser

Code : Tout sélectionner

sudo makepkg -s
tout en ne modifiant pas les droits du user, comment dois je m'y prendre s'il vous plaît?

Je vous remercie par avance,
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par FoolEcho »

Ça n'a plus rien à voir avec le sujet initial, merci de créer un autre fil.

D'autant que tu mélanges beaucoup de notion... En deux mots:
- pour installer un paquet depuis AUR, le plus simple reste de passer par un assistant: Assistants_AUR .
- pour le faire manuellement comme tu fais, supprime le dépôt git donné à root. Et clone de nouveau avec ton utilisateur... seule l'installation du paquet nécessite root (ou un admin si tu rajoutes ton utilisateur dans le groupe wheel).
«The following statement is not true. The previous statement is true.» :nage:
stephan08
Daikyu
Messages : 93
Inscription : jeu. 19 nov. 2015, 23:18

Re: [APACHE] Le module libphp7.so n'est pas présent

Message par stephan08 »

Ok, ça marche.

Je clos cette discussion et en crée une autre.
Répondre