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:
<?php phpinfo(); ?>
. Il affiche une page vierge lorsqu'il est affiché à partir du navigateur..html
statique et voit bien apparaître correctement dans le navigateur. Apache fonctionne donc et le répertoire est correct./etc/php.ini
, modification de la directive display_errors
en On
. Toujours une page blanche/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.AddHandler php5-script .php
et AddType text/html .php
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,
/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.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.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?
consultez votre script phpinfo ().
<?php
phpinfo();
?>
manque le "php" derrière le premier "?" donnera une page blanche
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
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
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
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.
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.
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