Est-il correct de coder PHP sur Windows et de l'héberger plus tard sur un serveur exécutant Linux? Peut-il y avoir des problèmes dans la migration d'un tel projet?
Je pense qu'il ne peut vraiment pas y avoir de problème, d'autant plus que je suis un débutant en PHP et que je n'utiliserai aucune des fonctions avancées qui peuvent être spécifiques au système d'exploitation. Cependant, je voudrais m'assurer que je n'aime vraiment pas Linux du tout.
Réponses:
Quelques conseils:
Sensibilité à la casse du système de fichiers
Si votre fichier s'appelle HelloWorld.php, ceci:
est légitime sur Windows et fonctionnera. Mais les noms de fichiers Linux sont sensibles à la casse, vous pouvez avoir des fichiers appelés
HelloWorld.php
,helloworld.php
,hEllOwOrlD.php
dans le même répertoire. Vous devez donc développer sous Windows comme si vous développiez sur un système de fichiers sensible à la casse: utilisez exactement les noms de fichiers, noms de répertoire, noms d'extension corrects -.php
est également différent de.PHP
.Séparateurs de répertoires et de chemins
Sous Windows, nous disons:
Mais sous Linux, nous dirions:
PHP est assez intelligent pour ne pas s'en soucier, les deux séparateurs fonctionnent dans les deux systèmes. Mais vous devez être cohérent et utiliser la barre oblique (/) partout car c'est également la norme sur la plupart des systèmes. Il y a une constante prédéfinie astucieuse
DIRECTORY_SEPARATOR
qui se traduit par la bonne, si vous voulez aller aussi loin:Il en va de même pour le séparateur de chemin d'accès, qui est un point-virgule sous Windows, deux-points sinon. Donc, pour être en sécurité, vous devez faire:
lorsqu'il a besoin d'un séparateur de chemin. Bien que la plupart des gens pensent que PHP ne se soucie pas du séparateur que vous utilisez, c'est correct, mais il y a un hic important: les séparateurs seront ceux spécifiques au système lorsque vous demandez au système des répertoires ou des chemins. Supposons donc que vous souhaitiez faire exploser le chemin d'inclusion dans ses parties:
Encodage et délimiteur de fichier
Vous devez définir votre IDE pour définir le codage de fichier pour tous vos scripts sur UTF-8 au lieu de Cp *, et le délimiteur de ligne de fichier sur Unix (
"\n"
au lieu de"\r\n"
). Dans la plupart des cas, cela n'a pas vraiment d'importance, mais vous devez être cohérent et la meilleure façon est la méthode Unix (qui fonctionne bien sous Windows mais pas l'inverse).la source
Vous ne pouvez pas exécuter
strftime()
avec%e
dans l'environnement Windows, comme indiqué dans la page de manuel :la source
Il n'y aura aucun problème lors de l'exécution du code. Si vous modifiez les fichiers enregistrés sur Windows sous Linux, vous remarquerez peut-être que les caractères de fin de ligne peuvent être différents, mais cela ne fera rien de mal. Si cela vous dérange, configurez votre IDE / éditeur Windows pour utiliser la fin de ligne Unix.
la source
Configurez-vous avec un banc d'essai Linux. Ce pourrait être un ordinateur Linux virtuel fonctionnant sous Windows, ce pourrait être un ordinateur à double démarrage, ce pourrait être le système d'un ami. Ensuite, de temps en temps (par exemple le lundi matin), transférez votre code sur le système Linux et testez-le.
Les autres réponses ont traité les principaux problèmes auxquels vous serez confronté, mais il existe de nombreux petits problèmes, comme:
Oui, il existe des moyens de contourner soigneusement toutes ces différences, mais avez-vous pris soin d'utiliser les solutions de contournement? Bien sûr que non - vous avez codé et cela a fonctionné, donc ça doit être OK.
Ne placez rien sur un ordinateur hôte tant qu'il n'a pas été testé sur un système d'exploitation similaire.
Je n'ai aucune expérience du portage de Windows vers Linux, mais j'ai une certaine expérience du portage de Linux vers Windows et plus d'expérience du portage de Linux vers OS X. Cela peut être fait, mais les clés sont les tests, les tests et les tests.
la source
Même si je suis assez à l'aise sur la ligne de commande Linux et avec des outils d'édition Linux comme vim, je fais l'essentiel de mon développement PHP sur une machine Windows.
J'ai un serveur virtuel sur Internet (me coûte environ 20 $ par mois) que j'utilise comme serveur de développement, et je me connecte avec FileZilla. FileZilla télécharge les fichiers que je modifie dans un répertoire temporaire et garde une trace des sauvegardes et quand je le sauvegarde, il le remet sur le serveur de développement, et je le test à partir de là.
C'est un peu lourd, mais cela me permet de faire le développement à peu près n'importe où; en utilisant FileZilla et un simple éditeur sur une clé USB, je peux même me connecter à partir d'un autre ordinateur et apporter des modifications. Tous les tests sont toujours sur le serveur Linux, donc j'attrape tous les problèmes que j'ai pu causer - moins de surprises désagréables lorsque je jette le code sur le serveur.
Vous pouvez faire la même chose avec un compte d'hébergement bon marché (bien que, selon le type d'application que vous développez, vous puissiez rencontrer des problèmes de performances, car les comptes d'hébergement bon marché sont généralement assez sous-alimentés) et d'autres nombreuses applications FTP ont également la modification et- fonctionnalité de téléchargement.
la source
Oui, cela peut être fait, mais plusieurs choses que vous devez considérer. Vérifiez les réponses pour plus d'informations.
C'est l'une de ces choses, parfois les développeurs doivent le faire, à cause des ressources, pas parce qu'ils l'aiment.
Vous pouvez avoir un serveur Web local (apache, cherokee, même M $), sur votre PC, et un serveur PHP installé. Et votre PC peut ne pas avoir de connexion Internet ou ne peut se connecter que pendant de courtes périodes.
Plus tard, vous pouvez mettre à jour un vrai site Web, mettre à jour votre fichier sur le vrai serveur, avec des outils ftp, avec le même PC ou un autre PC, connecté à Internet.
la source
Comme la plupart des gens l'ont dit, il ne devrait vraiment pas y avoir de problèmes. Cela dit, VirtualBox facilite la mise en place d'une machine virtuelle Linux sur laquelle vous pouvez tester votre base de code pour vous assurer qu'elle fonctionne dans l'environnement de production sans avoir cet environnement de production à portée de main.
la source