8
votes

Phpinidir cassé sous Windows 7?

J'ai eu un serveur exécuté sur une machine Windows XP à l'aide d'Apache2 avec PHP et MySQL. J'ai récemment mis à niveau vers Windows 7 et j'ai eu du mal à le faire fonctionner. Apache fonctionne bien et PHP fonctionne, mais je n'arrive pas à le faire fonctionner avec un fichier php.ini .

Lorsque je défini phpinidir sur un répertoire avec un fichier php.ini , le service Apache ne démarre pas.

Quand je défini phpinidir sur un répertoire sans PHP.INI , le service Apache commence.

Lorsque je laisse de côté phpinidir , le service Apache ne démarre pas.

Quelqu'un a-t-il trouvé une solution pour ce problème? Merci!

EDIT:

phpinidir "c: \ windows" #works (no php.ini fichier)

phpinidir "c: \ fichiers de programme (x86) \ php \" #does ne fonctionne pas (contient php.ini fichier)

Je l'active au plus un à tout moment.


2 commentaires

Pouvez-vous poster les directives de configuration qui fonctionnent et ne fonctionnent pas? Avez-vous une erreur dans les journaux d'Apache?


D: \ apache24 \ bin> httpd.exe -d d: / apache24 ah00526: erreur de syntaxe sur la ligne 517 de D: /APache24/conf/httpd.conf: commande invalide 'phpinidir', a été mal orthographiée ou définie par un module non inclus Dans la configuration du serveur


7 Réponses :


3
votes

Il y a plusieurs raisons:

  • Version ancienne d'Apache et / ou PHP. Apache 2.2.13 / 2.2.14 semble fonctionner correctement dans Windows 7, ainsi que PHP 5.2.11 / 5.3.
  • Certaines extensions PHP peuvent provoquer une défaillance de démarrage Apache. Vous pouvez vérifier les fichiers journaux d'Apache ou pour activer 'display_startup_errors' dans php.ini (lorsqu'il est activé, vous pouvez utiliser Apachemonitor.exe pour démarrer ou arrêter le service Apache, et si une erreur survient, elle affichera un message). Vous pouvez également désactiver toutes les extensions PHP et si cela contribue à commencer à leur permettre un par un et voir lequel provoque le problème.
  • IMHO, assurez-vous d'avoir téléchargé une archive de PHP et n'a pas utilisé l'installateur automatisé. De mon expérience, les installateurs n'ont jamais bien fonctionné. Vous pouvez toujours ajouter deux directives liées à PHP (phpinidir et loadmodule) dans le fichier de configuration Apache et vous assurer que PHP Dir est inclus dans le chemin de Windows. OH, et l'erreur de service peut également être causée par la bibliothèque PHP2APACHACH.
  • Vérifiez si les répertoires Apache / PHP / MySQL sont inclus dans le chemin de Windows. Voici un bon utilitaire pour le faire: Chemin de Redmond . Vous pouvez ajouter les répertoires suivants dans le chemin: Apache / Bin Dir, PHP Dir, MySQL / Bin Dir. Cela pourrait aider.

12 commentaires

J'ai essayé de permettre des erreurs, mais continuez à obtenir la même erreur - "L'opération demandée a échoué!"


Il y a une section à la fin de PHP.ini avec ce qui semble être des extensions. Ils ressemblent à ceci: [php_bz2] extension = php_bz2.dll [php_curl] extension = php_curl.dll lorsqu'ils sont tous commentés, Apache commence bien. Une idée de cette idée?


Après quelques autres tests, il semble que je puisse activer les extensions, mais il existe une sorte de limite, je pense par la taille totale de la vulgarisation?


Ok, donc c'est causé par une extension PHP. Avez-vous compris lequel exactement? Il n'est pas nécessaire de permettre toutes les extensions à la fois. Essayez simplement d'activer ceux dont vous avez besoin, un par un, afin que vous sachiez lequel échoue. Pourriez-vous également vérifier la valeur de "extension_dir" dans php.ini?


Oh, et spécifiez-vous les versions d'Apache et de PHP que vous avez installées?


D'accord. C'est exactement ce que j'ai. Deux autres choses. Avez-vous testé le fichier de configuration de Apache? (Démarrer -> Tous les programmes -> Apache HTTP Server -> Configurer le serveur Apache -> Configuration du test). Cela devrait dire "syntaxe ok". Pourriez-vous également vérifier s'il y a quelque chose dans le fichier error.log? (Apachedir / Logs / Error.log, au cas où vous ne changeriez pas le chemin d'erreur.log).


Le test dit "Syntaxe ok" comme si vous avez dit. Le journal n'a aucune erreur, cependant, je reçois les avertissements suivants quand il échoue. [Avertissement] (OS 995) L'opération d'E / S a été abandonnée en raison d'une sortie de fil ou d'une demande d'application. : Winnt_accept: L'acceptation asynchrone a échoué. [Avertissez] PID Fichier C: / Fichiers de programme (X86) / Apache Software Foundation / Apache2.2 / Logs / httpd.pid écrasé - arrêt impur de l'exécution d'Apache précédente?


Euh oh, peut-être que cela aidera: Brooks-Bilson.com/blogs/rob/index.cfm/2008/1/4/...


cela n'a pas aidé. L'avertissement d'identification semble être le plus répandu.


Peut-être que c'est causé par le pare-feu ou une autre application qui utilise le même port que Apache? Je viens de réussi à écraser Apache par Skype (Outils -> Options -> Advanced -> Connexion -> Utiliser le port 80 et 443 ...), je l'ai effectivement désactivé avant juste après l'installation, mais quand il est retourné La même erreur se produit ("l'opération demandée a échoué!"), bien que Apache n'écrit rien dans le fichier journal.


Si ce n'est pas causé par pare-feu / skype, vous pouvez essayer ces éléments: # 1 Remplacez l'installation PHP avec celui-ci: php.net/get/php-5.2.11-win32.zip/from/a/mirror . # 2 Assurez-vous que Apache et PHP sont inclus dans le chemin de Windows. Si ces deux éléments ne fonctionnent pas, essayez de déplacer Apache et PHP à partir du répertoire des fichiers de programme en la racine (par exemple C: \ Apache et C: \ php), essayez simplement d'utiliser un chemin sans blanchissures, cela aide parfois.


# 1 semble l'avoir réparé. La seule différence que je vois est que la nouvelle version a beaucoup moins d'extensions, alors je suppose que une ou plusieurs des extensions rompaient quelque chose. Merci!



5
votes

J'ai eu le même problème. Je l'ai corrigé. Ouvrez le fichier php.ini avec un bloc-notes ou un éditeur de texte. Désactivez toute l'extension dans le fichier php.ini. Extensions de commentaires par un par et découvrez quelle extension provoque le problème.


0 commentaires

2
votes

J'ai eu le même problème, vous devez spécifier l'URL complète du module PHP dans le httpd.conf code>.

Tous les guides que j'ai trouvés ont dit de mettre les suivants: P>

PHPIniDir "C:/Program Files/PHP"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"


0 commentaires

10
votes

Supprimer le dernier slash: xxx


1 commentaires

Mordu à nouveau par une barre oblique backslash dans httpd.conf ..., merci



1
votes

Je n'ai jamais été capable d'aller au-delà de cette ligne:

LOADMODULE PHP5_MODULE "C: / Fichiers de programme (x86) /php/php5apache2_2.dll"

Enfin, dans le désespoir, j'ai créé un nouveau dossier C: / PHP, copié cette DLL dans C: / PHP et modifié la ligne sur

LOADMODULE php5_module "C: /php/php5apache2_2.dll"

Et pour la première fois que tout fonctionnait! Peut-être que ça n'aime pas les espaces sur le chemin. Ou peut-être que cela n'aime pas les noms de chemin longue. Je ne sais pas. Il est probable que ce correctif soit spécifique à une version particulière d'Apache et de PHP, mais après avoir passé environ 20 heures sur ce problème, je suis si seleur que je ne sais pas ce que cette dépendance pourrait être.


0 commentaires

1
votes

J'ai aussi eu ce problème, mais je pourrais avoir Apache de travailler à nouveau en désactivant toutes les extensions du fichier php.ini (j'ai eu tout le DLL dans le dossier EXT, mais ils ont été désactivés dans le PHP.ini) Depuis que je voulais utiliser toutes les extensions PHP, j'ai essayé de désactiver un par un de voir lequel écrasait Apache. J'ai également installé PHP dans le C :, pour éviter les problèmes "espace vide / chemin long". En fin de compte, voici la manière dont le fichier httpd.conf de mon Apache est, dans la partie de php: xxx

aussi, les extensions qui écrasaient Apache étaient les suivantes:

  • php_oci8.dll
  • php_pdo_oci.dll
  • php_pdo_oci8.dll
  • php_pdo_sqlite_external.dll
  • php_pspell.dll
  • php_sybase_ct.dll

    Je ne sais vraiment pas ce qui ne va pas avec eux, cependant.

    Veuillez noter que j'ai installé PHP à l'aide du programme d'installation MSI (PHP-5.2.17-Win32-VC6- x86.msi) et j'ai installé toutes les extensions. J'utilise également Windows 7.


0 commentaires

0
votes

Au fur et à mesure de la réponse à la réponse @ AR2R de la suppression de la dernière barre oblique inverse, vous pouvez écrire le chemin à l'aide de barres obliques (avant) et fonctionnerait même avec une barre oblique à la fin. Pour une raison quelconque, en utilisant un fort> Backslash strong> à l'extrémité em> d'un chemin ne fonctionne pas dans les versions récentes de Windows:

# works, no slash or forward slash at the end
PHPIniDir "C:\Program Files\PHP7"
PHPIniDir "C:/Program Files/PHP7/"
PHPIniDir "C:\Program Files\PHP7/" # mixing slashes and backslashes

# doesn't works, backslash at the end
PHPIniDir "C:\Program Files\PHP7\"


0 commentaires