让PHP站点指向与代码

时间:2018-02-27 15:17:11

标签: php linux xampp wamp wampserver

我使用Wampserver在Windows上运行PHP站点。整个网站都有一个硬编码的行,如:

$settings = parse_ini_file("/usr/local/apache2/myconfigs/settings.ini", true);

我知道这是不好的做法,但它不受我的控制。

当网站运行时,有任何可能的方法,只要代码在parse_ini_file函数中查找C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini,我就可以欺骗网站指向/usr/local/apache2/myconfigs/settings.ini吗?

5 个答案:

答案 0 :(得分:3)

$settings = parse_ini_file(APACHE_INI_PATH, true);
// $settings = parse_ini_file("/usr/local/apache2/myconfigs/settings.ini", true);

答案 1 :(得分:1)

这有点像hackish,但我认为这是你正在寻找的,所以这里的诀窍是重新定义parse_ini_file函数并使其忽略无效的传递路径("/usr/local/apache2/myconfigs/settings.ini")并使用你的改为正确的文件。

这看起来很简单,但有点棘手,因为你的新功能也应该以某种方式调用原始的parse_ini_file函数,这就是为什么你需要先重命名然后覆盖

您需要为此启用 PHP runkit扩展,请查看runkit_function_redefinerunkit_function_rename以供参考。

未经测试但应该有效,代码应该是这些内容:

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);
});

确保上面的代码在应用程序脚本的开头执行,并且任何parse_ini_file调用都应该使用您的文件而不是硬编码的文件。

如果您的应用程序没有单一的入口点,您可以将上面的代码放在上面,您可以将它放在一个单独的脚本中,并在通过{{1}中的auto_prepend_file设置运行任何脚本之前加载PHP } {},同时确保settings.ini设置为runkit.internal_override,因为On不是用户定义的函数。

答案 2 :(得分:1)

你好请检查一下

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);

});

它可以返回

  

调用未定义的函数runkit_function_rename()

修复此错误please read here

or here

答案 3 :(得分:0)

如果您不想按照@cddoma的建议进行查找和替换,我建议您在Windows机器中创建目录/ usr / local / apache2 / myconfigs /,并复制文件设置。 ini从C:\ wamp64 \ bin \ apache \ apache2.4.27 \ myconfigs \ settings.ini到该目录。

打开Windows命令行并输入以下内容

mkdir C:\usr\local\apache2\myconfigs\

copy C:\wamp64\bin\apache\apache2.4.27\myconfigs\settings.ini C:\usr\local\apache2\myconfigs\

答案 4 :(得分:0)

您可以使用Symbolic link on Windows

执行此操作