web-dev-qa-db-fra.com

Se vider PHP page sur Apache

Dans un serveur cloud digitalOcean nouvellement installé (CentOS), j'ai installé php et Apache. Le serveur Web fonctionne correctement:

[root@a2m5cent01 httpd]# service httpd status
httpd (pid  11232) is running...
[root@a2m5cent01 httpd]# php --version | head -1
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 

Mais le navigateur affiche des pages vierges (page blanche) si j'essaie de visiter une page php.

Voici ce que j'ai fait jusqu'à présent pour résoudre les problèmes suivants:

  1. Création d'une page avec le contenu suivant: <?php phpinfo(); ?>. Il affiche une page vierge lorsqu'il est affiché à partir du navigateur.
  2. Juste pour être sûr, Apache pointe vers le bon répertoire, y place une page .html statique et voit bien apparaître correctement dans le navigateur. Apache fonctionne donc et le répertoire est correct.
  3. Dans /etc/php.ini, modification de la directive display_errors en On. Toujours une page blanche
  4. Dans le fichier de configuration Apache (/etc/httpd/conf/httpd.conf), cette ligne Include conf.d/*.conf a été trouvée. Dans le répertoire conf.d, il y a un fichier php.conf contenant la ligne: LoadModule php5_module modules/libphp5.so. Assuré que ce fichier .so existe réellement à cet endroit.
  5. Dans le même fichier, j'ai également ces deux lignes: AddHandler php5-script .php et AddType text/html .php
  6. Exécuté la page php à partir de la CLI, cela fonctionne bien - php fonctionne donc localement.

Alors pourquoi est-il toujours montré une page blanche/blanche sur le navigateur? Que manque-t-il d'autre?

EDIT Sur la base des suggestions de @Nathan, 

  1. J'ai vérifié le fichier journal des erreurs Apache, aucune erreur n'a été signalée Signalée ici.
  2. Mon /etc/php.ini dit, php error_log se trouve sous le nom syslog. J'ai donc coché /var/log/messages mais je n'ai trouvé aucun message d'erreur PHP.
  3. Ensuite, je mets des HTML normaux dans le fichier php contenant l'appel phpinfo(). Fait intéressant, j'ai trouvé que même les textes HTML normaux ne viennent pas non plus. Il still produit une page vierge.
  4. Ensuite, j'ai vérifié le journal Apache access. Surprise! Il n'y a pas de demande GET pour aucun des fichiers PHP que j'ai essayé de charger dans le navigateur. MaisGETrequest pour tous les fichiers non-php existe avec 200 codes retour. 

Apache est pas même enregistre toute demande d'accès pour les fichiers PHP. Une idée pourquoi cela arriverait-il?

10
hashbrown

consultez votre script phpinfo ().

<?php
phpinfo();
?>

manque le "php" derrière le premier "?" donnera une page blanche

15
linuxmint17

Je pense que votre installation php avec Apache est défectueuse. C'est pourquoi vous ne pouvez voir aucune page php sur votre serveur web. Nettoyez, supprimez toutes les applications existantes, telles que httpd, php, php-fpm, php-cli, etc.

yum install httpd -y
yum install php php-common php-cli php-Gd php-curl php-fpm -y

assurez-vous ensuite de redémarrer votre serveur httpd. 

service httpd restart

Installez mod_fastcgi:

yum install  mod_fastcgi

Démarrer le service:

service php-fpm start

Redémarrez Apache:

service httpd restart

5. Configuration d'Apache avec PHP-FPM

Ouvrez le fichier fastcgi.conf:

nano /etc/httpd/conf.d/fastcgi.conf

Ajoutez ceci à la fin du fichier:

<IfModule mod_fastcgi.c>
                DirectoryIndex index.html index.shtml index.cgi index.php
                AddHandler php5-fcgi .php
                Action php5-fcgi /php5-fcgi
                Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
                FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -Host 127.0.0.1:9000 -pass-header Authorization
</IfModule>

Après cette recherche après "FastCgiWrapper" et assurez-vous qu’il est réglé sur "off" puis enregistrez le fichier. 

Le répertoire/usr/lib/cgi-bin/doit exister, nous le créons donc:

mkdir /usr/lib/cgi-bin/ 

Si mod_php est installé et activé, nous devons le désactiver afin d'ouvrir la configuration à /etc/httpd/conf.d/php.conf:

nano /etc/httpd/conf.d/php.conf

Mettez en commentaire les lignes AddHandler et AddType afin que cela ressemble à ceci:

#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
#AddHandler php5-script .php
#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 line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps

Enregistrez le fichier et redémarrez Apache:

service httpd restart
5
DeSmOnd

J'ai le même problème ... Le problème réside dans les iptables. ( On dirait que c'est )

Essayez avec:

service iptables stop
## check if it stop...
service iptables status

Ensuite, essayez de recharger à nouveau la page.

Si vous aviez une autre solution s'il vous plaît partager.

[ edit ] Le redémarrage du service iptables fonctionne pour moi.

Essayer:

service iptables restart
1
wwwanaya

Naviguez-vous directement vers le fichier php? Ou allez-vous simplement à la racine du répertoire?

Si c'est le cas, Apache pourrait ne pas reconnaître .php comme index de répertoire.

Pour tester, essayez de créer un fichier .htaccess dans votre racine Web contenant la ligne suivante:

DirectoryIndex index.php
1
Aidan

Tout d’abord, vous devez vérifier les autorisations de votre fichier . Si vous n'accordez pas l'autorisation de lecture au public, Apache génère une page vierge sans afficher d'erreur.

1
Saemmel

Désolé de republier un ancien fil ... c'est important.

J'avais aussi ces problèmes où aucune réponse HTML ne sortait

Après avoir revérifié le fichier php.ini ou mes fichiers de configuration Apache et ne recevant toujours aucune sortie, j'ai découvert par la suite que je supprimais l'erreur d'inclure/exiger d'une classe, avec @, qui était imbriqué dans une fonction constructeur. Il y avait une erreur de syntaxe dans le fichier inclus, qui a complètement arrêté toute sortie lorsque des erreurs ont été générées.

Donc, vérifiez d'abord avec vos gestionnaires ... Si vous stockez tout votre contenu dans vars en premier et que vous incluez d'abord divers scripts qui échouent, vous devez voir ces erreurs. Si vous supprimez les erreurs de gestionnaire de fichiers, vous obtiendrez un écran vide si vous avez une erreur de syntaxe dans le fichier.

Rechercher dans vos fichiers pour toutes les instances de @ dans votre code php. Réglez ensuite @include "/path_to/script.php"; en include "/path_to/script.php"; ou n'importe quoi @$foo en $foo, car une telle variable peut faire référence à une dépendance qui provoque la fin du script sans affichage dans le journal des erreurs httpd ou dans la réponse http.

0
Paul Latour

Puisque tout se présente sous son état par défaut, avez-vous vérifié cette partie juste pour confirmation 

cat /etc/php.ini | grep log_errors

Si log_errors est désactivé, activez-le et vérifiez-le sous le journal après le redémarrage de httpd ./var/log/httpd/error_log

-- Vérifiez également cette partie de la configuration php. 
cat /etc/php.ini | grep error_reporting 

Cette valeur doit être activée par défaut pour que display_errors fonctionne. 
error_reporting = E_ALL

0
Allie