Open
Conversation
Le script a été modifié pour améliorer la portabilité, la robustesse, l'ergonomie, la sécurité opérationnelle et la sûreté au démarrage PHP. Des options CLI ont été ajoutées pour une utilisation plus flexible.[ v1.4.0] Améliorations : rollback, dry-run, compatibilité Linux/macOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🛠️ prestashop-fix.sh — Description étendue
📌 But du script
Ce script automatise la génération / mise à jour d'un fichier
.htaccesset la création d'unphp.inipour des sites PHP (WordPress / PrestaShop). Il vise à offrir :.htaccess,.htaccess,php.iniminimal et réutilisable,Il a été adapté pour être plus portable (Linux/macOS/BSD) et plus sûr en production.
🧭 Principales améliorations apportées
set -euo pipefail+IFSrestreint pour éviter des comportements imprévus liés aux erreurs ou aux variables non définies..htaccessest renommé en.htaccess.bak.<timestamp>avant toute écriture.mktemp_portable) puis on remplace.htaccesspar unmvatomique — minimise le risque d'état incomplet.mktemp_portable()prend en charge les différences de comportement demktempentre GNU et BSD (macOS).7.4ou74et normalise vers74. Validation stricte des versions prises en charge.-n,--dry-run: simulation sans écrire ;-v,--version <ver>: fournir la version PHP en non interactif ;-h,--help: aide.php.iniest généré avec les extensions commentées par défaut pour éviter d'activer des modules inexistants qui provoqueraient des erreurs au démarrage.phpver.sh(si présent).📂 Contenu produit
.htaccess: contientSetHandler/AddHandlerpour sélectionner la version PHP (p.ex.application/x-httpd-php74),suPHP_ConfigPath /chemin/absolu/php.ini,wp-config.phpest détecté).php.ini: fichier minimal contenant timezone, limites, et une liste d'extensions commentées.⚙️ Détail technique (section par section)
1. En-tête et sécurité
set -euo pipefail: coupe le script à la moindre erreur, empêche l'utilisation de variables non initialisées et fait échouer les pipelines si une commande échoue.IFS=$'\n\t': évite que les espaces cassent les boucles/reads.2. mktemp_portable()
mktemp "${prefix}.XXXX"(GNU),mktemp -t "${prefix}"(BSD/macOS),mktemp(fallback),/tmp/<prefix>.$RANDOMen dernier recours..htaccess.3. Sélection de la version PHP
-v 74) ;PHP_VERSION=74;7.4et74(normalisation automatique).4. Backup .htaccess
.htaccessexiste, on le renomme en.htaccess.bak.<YYYYMMDD-HHMMSS>; si le nom existe déjà on ajoute un suffixe numérique.--dry-runon affiche l'action sans renommer.5. Écriture atomique du .htaccess
wp-config.phpest détecté.mv <tmp> .htaccesspour remplacement atomique.trapmis en place pour supprimer le tmp si le script est interrompu.6. php.ini
--dry-runle contenu est affiché sans écrire.7. Options CLI
-n, --dry-run: simule tout, n'écrit rien.-v, --version <ver>: version PHP en ligne de commande.-h, --help: affiche l'aide.-vouPHP_VERSION=74.🧪 Exemples d'utilisation
./prestashop-fix.sh -v 74 # ou PHP_VERSION=74 ./prestashop-fix.sh✅ Vérifications effectuées (par l'auteur du patch)
bash -n prestashop-fix.sh→ OK./tmp/prestashop-fix-test:.htaccessetphp.inicréés correctement.mktemp_portableprévue ; attention aux outils système (ex. git peut demander d'accepter la licence Xcode).SetHandler application/x-httpd-php<version>dépend de la configuration de l'hébergeur. Certains hébergeurs utilisent des syntaxes différentes. Vérifier avec l'hébergeur cible.suPHP_ConfigPathdoit pointer vers un chemin valide. Le script écrit le chemin absolu basé sur lepwd. Si ton chemin contient des espaces ou caractères spéciaux, vérifie la compatibilité avec l'hébergeur.php.inicontient des extensions commentées : si tu décommente une extension qui n'existe pas sur le système, PHP peut émettre des erreurs au démarrage.memory_limit=2048M) peuvent ne pas être autorisées en mutualisé : adapte-les si nécessaire.git) peuvent demander l’acceptation de la licence Xcode. Le commit Git peut être bloqué jusqu'à acceptation (sudo xcodebuild -license).🛠️ Bonnes pratiques recommandées
--dry-runsur un environnement de test..htaccessavec l'hébergeur (ex: OVH, cPanel, Apache custom).php.inien fonction de l'environnement (ex. baisser memory_limit en mutualisé).🧾 Changelog (résumé des commits récents)
mktemp_portable().--dry-run,-v/--version,--help)..htaccess.php.iniavec extensions commentées.🔁 Flux recommandé pour contribution (fork & PR)
feature/portability-dryrun).bash -n prestashop-fix.shPHP_VERSION=74 ./prestashop-fix.sh -n