J'ai Ubuntu-9.04 et j'utilise XAMPP-1.7.2 pour développer une application Web. Le problème est que lorsque j'essaie de visualiser un fichier PHP que j'ai écrit en visitant localhost/folder/file.php
, Firefox me propose de le télécharger au lieu de le montrer sous forme de page Web. Si je le télécharge et que je l'ouvre dans mon éditeur de texte préféré, je reçois un fichier vide ne contenant rien.
UPDATE: Fonctionne sur un autre serveur Eh bien, j'ai téléchargé la page sur un autre serveur et je peux très bien la voir! Donc, le problème n'est pas avec Firefox. Ce n'est pas non plus avec le code lui-même. Mon serveur ou sa configuration doit être le problème. Cela vous donne-t-il un indice sur ce qui se passe?
UPDATE: Isoler le problème Firefox propose de ne télécharger que le premier de ces trois fichiers:
test1.php est offert en téléchargement
<?php
mysql_connect("localhost","root","");
mysql_close();
?>
sorties test2.php : Avertissement: mysql_close (): non, ressource MySQL-Link fournie dans /opt/lampp/htdocs/test.php à la ligne 3
<?php
//mysql_connect("localhost","root","");
mysql_close();
?>
test3.php génère une page vierge
<?php
mysql_connect("localhost","root","");
//mysql_close();
?>
Je sais que mon serveur est opérationnel et il me dit que PHP5 est activé et qu'il fonctionne également.
Voici ce que je trouve dans le journal des erreurs XAMPP lorsque le problème survient (tronqué et formaté pour plus de clarté):
[notice] child pid 7338 exit signal Segmentation fault (11)
Oh, et firefox peut voir le fichier sans problème sur mon autre ordinateur (Windows XP SP3 et easyPHP en tant que serveur) Est-ce que quelqu'un sait ce que je peux faire pour résoudre ce problème?
UPDATE: using error_log ()
Voici ma tentative d'utilisation de error_log (): test4.php
<?php
error_log("Start of file reached by PHP");
mysql_connect("localhost","root","");
error_log("mysql_connect executed");
mysql_close();
error_log("mysql_close executed");
?>
Voici ce qu'il produit dans le journal des erreurs XAMPP (expliqué par souci de clarté):
[error] [client 127.0.0.1] Start of file reached by PHP
[error] [client 127.0.0.1] mysql_connect executed
[notice] child pid 5338 exit signal Segmentation fault (11)
Réponses:
Ça sent votre installation mysql. Est-ce que mysql fonctionne en tant que service? Votre compte root n'a-t-il vraiment pas de mot de passe? Quelles extensions mysql sont chargées dans php.ini? Il y en a un
php_mssql.dll
qui peut facilement être confondu avecphp_msql.dll
, mais je suis à peu près certain que cephp_mssql.dll
n'est que pour les fenêtres.Avez-vous édité votre php.ini /opt/lampp/php/php.ini? Ceux-ci peuvent aider au débogage:
Il convient également de regarder le numéro de port utilisé. Est-ce que $ MYSQL_TCP_PORT est défini? Qu'en est-il de l'entrée mysql-tcp dans / etc / services?
Mise à jour: Avez-vous essayé de vérifier la valeur de retour de la fonction de connexion? Je me demande si votre exemple est trop minimal. Essayez de faire ressembler votre test à ceci:
Cet exemple garantit que vous renvoyez quelque chose qui ressemble au HTML, que votre script échoue ou non. J'ai été en mesure de reproduire vos symptômes sans mot de passe root. C'est donc apparemment non seulement une bonne pratique, mais il doit être non vide.
J'ai pu transformer votre problème en une solution en
Au lieu de passer "" en tant que mot de passe root, si ce n'est rien, essayez d'utiliser mysql.default_password en tant que mot de passe. La valeur par défaut de mysql.default_password est NULL.
la source
/opt/lampp/lampp security
Cela pourrait être un problème matériel ou un problème de configuration Apache / PHP. J'ai généralement vu Signal 11 avec des problèmes de mémoire. Regardez vos configurations pour vous assurer que la limite de mémoire PHP n'est pas supérieure à la limite de mémoire Apache ou similaire.
On dirait que votre php_mod plante à mi-programme, donc Apache vous jette le fichier php avec un en-tête de type de contenu non html, ce qui permet à votre navigateur de le traiter comme un téléchargement. C'est juste une supposition, cependant. Vous devez collecter plus d'informations.
Ajoutez des
error_log()
appels à votre programme PHP afin d’isoler le moment où le crash se produit réellement dans votre code. Si cela ne résout pas le problème, configurez Apache de manière à créer un vidage de mémoire etgdb
à déterminer le début du segfault. Mon pari est mod_php.so.la source
mysql_close
page de manuel [ us.php.net/mysql_close] pour voir si votre connexion est réellement créée ou si l'mysql_close
appel est à l'origine du segfault.Vous dites que tout est opérationnel et que de simples fichiers apparaissent correctement. Mais certains fichiers vous invitent à enregistrer le fichier PHP. Cela signifie que vous devrez regarder le code de ces pages où il est brisé et vous demander de sauvegarder.
Il est fort probable que le code tue une ligne qui tue le serveur ou qui l'oblige simplement à abandonner l'analyse syntaxique de PHP.
Cela pourrait être une extension particulière utilisée par cette page ou une autre fonction killbot qui empêche le serveur de rester assis là, les bras croisés.
Vos journaux d’erreur indiquent que la dernière chose à faire avant d’enfouir la boîte de dialogue de sauvegarde dans votre visage est une connexion à la base de données. Suivez le code et assurez-vous qu'il est solide avant de passer au prochain fil d'Ariane de dépannage possible qui peut ou non se produire.
Etant donné que vous pouvez voir le fichier sans problème sur une autre configuration, dans ce cas easyPHP, le problème tient essentiellement à la configuration de XAMPP et à une configuration déclenchée par le code.
la source
J'ai rencontré exactement la même erreur. Assurez-vous que les privilèges d'utilisateur mysql sont définis correctement.
Connectez-vous à la ligne de commande et confirmez que vous êtes en mesure de vous connecter, basculez vers la base de données concernée et affichez les tables et les enregistrements. Connectez-vous simplement avec la commande: 'mysql -u user -p' et lancez des requêtes.
la source