Avoir un site PHP pointant sur un chemin différent de celui qui se trouve dans le code

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