Je gère un site PHP sous Windows en utilisant Wampserver. Tout au long du site, il y a une ligne codée telle que:
$settings = parse_ini_file("/usr/local/apache2/myconfigs/settings.ini", true);
Je sais que c’est une mauvaise pratique pour commencer, mais c’est hors de mon contrôle.
Lorsque le site s’exécute, est-il possible de tromper le site pour qu’il pointe vers C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini
chaque fois que le code recherche /usr/local/apache2/myconfigs/settings.ini
dans la fonction parse_ini_file?
C’est un peu piraté, mais je pense que c’est ce que vous cherchez, alors l’astuce consiste à redéfinir la fonction parse_ini_file
et à faire en sorte qu’elle ignore le chemin d’access non valide ( "/usr/local/apache2/myconfigs/settings.ini"
) et utilisez plutôt votre fichier correct.
Cela semble simple mais un peu délicat puisque votre nouvelle fonction devrait aussi appeler la fonction parse_ini_file
originale, c’est pourquoi vous devez d’abord la renommer puis la remplacer
Vous aurez besoin de l’ extension PHP runkit pour cela, regardez runkit_function_redefine et runkit_function_rename pour référence.
Non testé, mais devrait fonctionner, le code devrait être quelque chose autour de ces lignes:
runkit_function_rename('parse_ini_file','original_parse_ini_file'); runkit_function_redefine('parse_ini_file', function() { original_parse_ini_file("C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini", true); });
Assurez-vous que le code ci-dessus est exécuté au début de votre script d’application et que tout appel à parse_ini_file
doit utiliser votre fichier au lieu de celui codé en dur.
S’il n’y a pas de point d’entrée unique dans votre application où vous pouvez mettre le code ci-dessus, vous pouvez le placer dans un script séparé et charger PHP avant d’exécuter un script via le paramètre auto_prepend_file
dans votre fichier runkit.internal_override
est défini sur On
car parse_ini_file
n’est pas une fonction définie par l’utilisateur.
$settings = parse_ini_file(APACHE_INI_PATH, true); // $settings = parse_ini_file("/usr/local/apache2/myconfigs/settings.ini", true);
Bonjour s’il vous plaît vérifier ceci
runkit_function_rename('parse_ini_file','o_parse_ini_file'); runkit_function_redefine('parse_ini_file', function($p1,$p2) use($someCondition) { if($someCondition) o_parse_ini_file("C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini", true); else o_parse_ini_file($p1,$p2); });
il peut revenir
Appel à la fonction non définie runkit_function_rename ()
pour corriger cette erreur, veuillez lire ici
ou ici
Si vous ne voulez pas faire une recherche et un remplacement comme suggéré par @cddoma, je vous propose de créer le répertoire / usr / local / apache2 / myconfigs / dans votre machine Windows et de copier le fichier settings.ini depuis C: \ wamp64 \ bin \ apache \ apache2.4.27 \ myconfigs \ settings.ini à ce répertoire.
Ouvrez votre ligne de commande Windows et entrez les informations suivantes
mkdir C:\usr\local\apache2\myconfigs\
copy C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini C:\usr\local\apache2\myconfigs\
vous pouvez peut-être le faire avec un lien symbolique sur Windows