Rendre l’extension de fichier à interpréter par PHP

J’ai ajouté ceci à mon fichier .htaccess:

AddHandler fcgid-script .test 

(J’utilise FastCGI / VirtualMin / WebMin)

Et créé un fichier test.test avec le contenu;

  

Cela se traduit par une erreur de serveur interne et ce message dans le journal des erreurs:

 [Thu Apr 16 14:12:57.631287 2015] [fcgid:warn] [pid 2646] (104)Connection reset by peer: [client xxxx:53595] mod_fcgid: error reading data from FastCGI server [Thu Apr 16 14:12:57.631402 2015] [core:error] [pid 2646] [client xxxx:53595] End of script output before headers: test.test 

Qu’est-ce que je fais mal? J’ai essayé d’utiliser différents noms de gestionnaires comme x-httpd-php ou x-httpd-php5 mais cela ne fait rien du tout.

J’ai aussi essayé:

  SetHandler fcgid-script  

mais il a la même erreur de serveur interne.

Testé et vérifié pour fonctionner:

Comme vous avez mentionné que vous utilisez Webmin, j’ai adapté ma réponse à Webmin. Vous pouvez le faire en éditant également la configuration d’Apache via le shell.

Je noterai qu’il est généralement préférable d’éditer la configuration d’Apache, et dans ce cas probablement inévitable, car je ne pense pas que vous puissiez effectuer ce type de modification dans .htaccess . Bien qu’il y ait peut-être un piratage avec lequel je ne suis pas familier, un administrateur de serveur voudrait probablement garder ce verrouillé à l’intérieur de la configuration d’Apache. Les reflections sur .htaccess fichiers .htaccess avec des extensions de fichiers .htaccess par répertoire semblent non seulement lentes, mais également peu sécurisées.

Pas

J’ai installé Apache sur Ubuntu 14.04 via VirtualBox. J’ai ajouté Webmin et FastCGI.

J’ai pris les mesures suivantes:

  1. Connectez-vous à Webmin, accédez à votre hôte virtuel.
  2. Cliquez sur Modifier les directives
  3. Ajoutez les éléments suivants en bas:

  #Your SetHandler script here #(@MrTux's script works here but NOT IN .htaccess) Require all granted  
  1. Cliquez sur Enregistrer
  2. Cliquez sur “Appliquer les modifications” en haut.
  3. Vous avez terminé!

Je vais noter que SetHandler passe certains en-têtes, donc si vous déclarez ceci dans .htaccess il y a une chance que des en-têtes aient déjà été envoyés, ce qui déclenche votre erreur. Encore une fois, .htaccess n’est pas la méthode préférée pour définir des règles si vous contrôlez votre système. Dans ce cas, cela causerait probablement des problèmes de sécurité de toute façon.

Il semble que le module FastCGId ne sache pas comment exécuter votre script – la directive FcgidWrapper semble manquer (votre script PHP n’ayant pas de Shebang ).

En fonction de votre dissortingbution, vous devez le configurer manuellement ou vous pouvez ajuster la directive existante qui gère déjà les fichiers .php pour gérer également les fichiers .test (en général, vous devez utiliser la directive “SetHandler fcgid-script” et définir / dupliquer le fichier). Directive FcgidWrapper).

Exemple ajusté (extrait de https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples ):

  AddHandler fcgid-script .test  Options +ExecCGI FcgidWrapper /usr/bin/php5-cgi .test 

Plus d’informations et d’exemples: https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples et http://tltech.com/info/php-on-fcgid/

D’autres problèmes peuvent être basés sur des permissions, par exemple si vous utilisez suexec que le processus fastcgid ne peut pas écrire dans les journaux ou ne peut pas exécuter le script wrapper. Ici, il serait très utile d’indiquer si les fichiers .php normaux sont correctement exécutés.

Essayez de l’utiliser dans votre fichier htaccess

 AddType application/x-httpd-php .test 

Voir cette question de débordement de stack: Problème avec l’exécution des scripts CGI sur Apache .

Je ne suis pas un gars fastcgi. J’ai googlé le problème. J’ai reçu 2 problèmes similaires dans virtualmin . Je viens juste d’append la réponse affichée ici.

https://www.virtualmin.com/node/34903

  1. Accédez à virtualmin \ votre serveur virtuel \ configuration du serveur \ options du site Web \
  2. sélectionnez “Apache mod_php (exécuté en tant qu’utilisateur d’Apache)” puis enregistrez
  3. revenir en arrière “FCGId (exécuter en tant que propriétaire du serveur virtuel)” (il vous demandera d’exécuter des scripts CGI en tant que propriétaire du domaine)
  4. sauvegarder

https://www.virtualmin.com/node/25539

Aller à / home / sitename / fcgi-bin Utilisez la commande follpwoing pour réinitialiser l’indicateur immuable

“chattr -i php5.fcgi”

Supprimez ensuite les répertoires / home / sitename / etc et / home / sitename / fcgi-bin (en vous assurant que tout ce qui n’est pas lié à PHP est enregistré) Utilisation de virtualmin pour revenir au mode apache mod_php puis retour au mode FCGId. Le site devrait maintenant fonctionner N’oubliez pas de citer tous les fichiers / répertoires de public_html qui ont été apache: Notez que ce sont généralement tous les deux le nom du site.

J’espère que cela vous aidera.

Je questionne le gestionnaire fcgid-script . Ce n’est pas un gestionnaire PHP normal, même pour FCGI. Normalement vous verriez

  SetHandler application/x-httpd-php  

Ou

  SetHandler php5-fcgi  

Si aucun de ces éléments ne fonctionne, vérifiez que PHP FCGI est installé.

Tous les scripts CGI exigent que vous ajoutiez la ligne Shebang en haut du script.

Donc, si vous voulez lancer PHP, vous devriez avoir inclus quelque chose comme:

 #!/path/to/php 

En haut de votre script pour le faire fonctionner