11
votes

Où puis-je trouver les fonctions PHP Windows ne prend pas en charge?

Ma plate-forme normale de développement pour PHP est Linux. J'utilise un serveur de Red Hat pour mon site, mon entreprise utilise Red Hat et Fedora pour la production, et je Ubuntu à la maison. Je ne pouvais pas être plus heureux. Malheureusement, je suis maintenant obligé de passer beaucoup de travail à temps partiel en PHP sous Windows en utilisant WAMP.

Je dis cela est regrettable parce que je trouve sans cesse des choses qui supports Linux lequel Windows ne fonctionne pas. L'année dernière, elle a effectivement retardé un projet lorsque nous avons réalisé que WAMP a utilisé une version antérieure de PHP (ce qui a été fixé par le port de 5.3 à Windows). . Aujourd'hui, je viens d'apprendre que checkdnsrr n'est pas porté sur Windows et l'ensemble pcntl bibliothèque est disponible

Alors, mes questions est la suivante: < b> est quelque part, ce qui me dit les différences actuelles entre Windows et Linux concernant PHP?

Je ne cherche pas idiosyncrasies, comme ceux qu'on trouve dans les commentaires


1 commentaires

( sidenote ) checkdnsrr est disponible sous Windows à partir de PHP5.3


3 Réponses :


3
votes

Premièrement, gardez à l'esprit que certains problèmes inter-plate-forme ne sont pas dues au manque de soutien, mais les idiosyncrasies que vous mentionnez, le pire qui me vient à l'esprit est la direction de la répertoire slash. Ou le problème n'est pas avec la plate-forme mais avec le serveur. Par exemple, Apache a des variables environnementales que IIS ne semble même pas qu'il semblerait que des choses au niveau HTTP et TCP / IP seraient neutres du système d'exploitation.

sur cette note:

  • PCNTL est basé sur le modèle de processus UNIX, de sorte qu'il n'aurait donc pas de support Windows.
  • CHECKDNSRR est pris en charge pour Windows à partir de 5.3, et un package existait pour ajouter cette extension dans Windows avant.
  • Il existe une liste sur php.net de Extensions Windows-Seulement (com étant celui qui saute mon esprit sans contrôle), mais je suppose que, puisque PHP a été conçu à l'origine pour UNIX (ou au moins POSIX) et que 85% de la bande est sur Apache (j'ai fait ce numéro. up), ils ne sont pas autant de tollément, bien que vous ayez raison qu'il devrait y en avoir un.

    Si c'était moi, je voudrais devenir fou et créer un script qui a raclé la page de la liste d'extensions entière et que vous l'avez systématiquement, vérifiez la page d'introduction pour "Windows" pour avoir une idée de ce qui est spécial ou non disponible. Mais c'est moi, je suis Zany.

    Oh, et voici une liste rapide de bibliothèques que PHP se développe pour Windows ou ne se développera jamais:

    http://wiki.php.net/internals/windows/libs


1 commentaires

Je suppose que si vous regardez la solution postée ci-dessus, c'est plus ou moins ce que j'ai fait. Je viens de combiner la réponse de Gordon avec cette idée.



0
votes

Pour chaque fonction, appelle fonction_existes, par exemple xxx


2 commentaires

Et faites-le pour chaque fonction? Ce n'est pas terriblement élégant. En outre, la meur d'appel () signifierait que si la fonction n'existe pas (et c'est parmi une série de fonctions qui n'existent pas), il n'y aurait pas de retour sur toutes les autres fonctions.


Convenu, sur les deux chefs d'accusation; C'est un exemple simpliste de la manière de gérer le problème. D'autre part, je soupçonne qu'il n'y a qu'un petit sous-ensemble de fonctions qui posent problème, il n'est donc pas nécessaire de ne pas le faire pour toutes les fonctions une des appels (bien que si cela soit nécessaire, on pourrait sans trop de difficulté à créer un utilitaire qui analoguea le PHP et crée automatiquement un nouveau script qui appelle Funcion_exist pour chaque fonction appelée. Dans la pratique, j'ai trouvé l'approche ci-dessus pour travailler, bien que mes scripts PHP ne soient généralement pas très exigeants.