[LINUX] L'histoire de PHP qui était correcte dans l'environnement de développement mais boguée dans l'environnement de production LEVEL1 ~ 3 + 1

C'est ce qu'on appelle un environnement de production, mais c'est généralement un environnement de test. Veuillez regarder beaucoup.

Cas LEVEL1

N'y a-t-il pas quelque chose pour ceux qui développent avec Windows? Il est insensible à la casse dans l'environnement de développement (Windows) et est sous Linux.

Le plus gros dommage que j'ai subi a été lorsque le client m'a envoyé les images à utiliser dans la création du site. C'est parce que certains fichiers avec des extensions supérieures sont mélangés, n'est-ce pas?

image.png

Avez-vous compris ...

Je ne l'ai pas remarqué car l'image a été envoyée avec l'accord de [code]. [Extension]. Je l'ai remarqué juste avant de le mettre dans l'environnement de production, mais c'était très dangereux.

De plus, il convient de noter

if (file_exists($imagePath . $fileName '.jpg')) {

} elseif (file_exists($imagePath . $fileName '.JPG')) {

}

La dette que j'ai écrite pendant la deuxième année à ce moment-là est toujours active.

LEVEL2 SSL Si vous faites du développement WEB, vous pouvez en rencontrer un peu.

<iframe name="iframe" src="http://example.com/aaaaa/bbbb/" width="100%" scrolling="no" align="top" frameborder="0"></iframe>

Un incident s'est produit. Vous ne pouvez pas charger les iframes http à partir du site https.

J'utilise souvent iframe lorsque je demande "Je vais gérer le code source, mais je veux jouer avec une partie de mon entreprise!", Mais si le domaine où la source du client est téléchargée ne supporte pas SSL, c'est ridicule. Il n'y aura pas.

Le contenu du cadre est d'un blanc pur.

Cela aurait été bien si l'environnement de développement ne se trouvait pas sur le côté et était compatible avec SSL, mais cette fois, il a été découvert pour la première fois dans l'environnement de test.

Il faudra du temps pour que l'autre partie prenne en charge SSL, et à la suite de discussions entre les deux parties, nous avons décidé de procéder à la production avec la technique de puissance du "codage en dur du contenu dans le cadre pour le moment". (Effrayant)

À l'heure actuelle, seul le contenu tel que javascript et iframe est bloqué, et les images, etc. s'affichent correctement, car la communication sécurisée n'est pas garantie, mais Chrome semble bloquer les images séquentiellement à partir de 2020, alors soyez prudent. est.

Module d'extension LEVEL3

Soyez prudent avec les fonctions que vous n'utilisez pas normalement. En conclusion, j'ai eu un bug utilisant une fonction qui ne peut être utilisée qu'après l'installation du module d'extension, qui n'est pas une fonction fournie en standard avec php.

C'était alors que je révisais le code source apporté par un ingénieur junior, pas moi.

//Le reste de la division du montant par 100 millions
$surplus = bcmod($price, '100000000');

(J'ai vu ce type pour la première fois ...% c'est bien ...?) En réfléchissant, j'ai pensé que ce n'était pas mal et que ce n'était pas une mauvaise chose d'adopter un nouveau style d'écriture, alors je l'ai donné à la critique.

Cependant, quand je l'ai donné à l'environnement de test ... image.png Ouf! ??

... Comme je l'ai écrit au début, examinons attentivement les fonctions que nous voyons pour la première fois.

NIVEAU4 (bonus)

Ce n'est pas php. Une histoire sur DB.

Je n'entrerai pas dans les détails, mais voici quelques-uns des murs que j'ai rencontrés dans le passé. ・ Grande quantité de dead lock ⇒ Nous n'avons pas envisagé d'écrire à partir de services autres que le processus créé.

-Délai de réplication ⇒ Le maître et l'esclave n'ont pas été préparés correctement dans l'environnement de test.

・ Le traitement est plus de 5 fois plus lent que prévu ⇒ Lors du traitement de données à grande échelle, il y avait une différence considérable dans le temps de traitement total simplement parce que la distance entre le serveur WEB et le serveur DB était grande. De plus, je ne l'ai pas testé dans un environnement où il est monté à partir d'un serveur externe et gère des données.

etc···

Résumé (ou leçons apprises)

・ Rendons l'environnement de production et l'environnement de développement aussi proches que possible. ・ Lorsque vous faites quelque chose que vous n'avez jamais fait auparavant, soyez prudent.

Recommended Posts

L'histoire de PHP qui était correcte dans l'environnement de développement mais boguée dans l'environnement de production LEVEL1 ~ 3 + 1
Une histoire qui rend le débogage de modèle plus facile à voir dans l'environnement Django + SQLAlchemy
L'histoire selon laquelle l'environnement Homebrew a été époustouflé lors de l'installation d'Anaconda
Une histoire sur une erreur de construction dans une bibliothèque partagée qui fait référence à libusb
Une histoire sur la création d'un programme qui augmentera le nombre d'abonnés Instagram de 0 à 700 en une semaine
[Mémorandum] Une histoire sur l'essai du didacticiel OpenCV (reconnaissance faciale) dans un environnement Windows
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
À propos de l'environnement de développement que vous utilisez
L'histoire que XGBoost a finalement été installé
Échapper à l'environnement virtuel de Python ~ Une histoire sur le fait d'être piégé dans un environnement virtuel que j'ai créé ~
Utilisez le dernier pip dans un environnement virtualenv
À propos de la question qui s'inquiétait de l'erreur d'échantillonnage
Définir une adresse IP fixe dans l'environnement Linux
Une histoire sur l'exécution de Python sur PHP sur Heroku
Pensez à créer un environnement Python 3 dans un environnement Mac
Créez un environnement de développement de plugins Minecraft avec Eclipse
L'histoire qui s'inscrit dans l'installation de pip
Une histoire qui était pratique lorsque j'ai essayé d'utiliser le module d'adresse IP python
Notez que j'étais accro au script npm ne passant pas dans l'environnement de vérification
CodePicnic qui peut créer un environnement [Développement | Exécuter | Tutoriel | Démo] qui s'exécute sur le navigateur
Une histoire sur une erreur lorsque PyInstaller est utilisé dans un programme qui utilise googleapiclient
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Vous devez faire attention aux commandes que vous utilisez quotidiennement dans l'environnement de production.