我正在构建一个框架,其中产品实例使用主要的框架文件,直到有自己版本的该文件的副本。为实现这一点,我已经完成了以下操作:
所以,如果我调用
这个过程一直很好,直到我向产品根目录添加文件。我知道PHP / Apache正在缓存包含文件,并且人们可能认为要运行
不幸的是,运行
我有点困惑,我知道我们需要刷新PHP / Apache对文件是否存在的理解,但
有什么想法吗?
更新:更正,现在重新启动Apache似乎有帮助。我重申,这仅在尝试向MY_PRODUCT_ROOT添加文件以覆盖现有的MY_FRAMEWORK_ROOT文件进行自定义时发生。
更新:开发环境是Windows上的Zend Server CE PHP 5.3.14,生产环境是Centos Linux httpd,PHP 5.3+。我的开发环境启用了Zend优化器,这可能会产生影响,同时不使用APC或任何其他缓存脚本。
set_include_path(MY_PRODUCT_ROOT.'/' . PATH_SEPARATOR . MY_FRAMEWORK_ROOT.'/');
所以,如果我调用
include('view-users.php');
,它将首先在MY_PRODUCT_ROOT中查找/view-users.php,如果没有找到,然后它将查找MY_FRAMEWORK_ROOT/view-users.php。这个过程一直很好,直到我向产品根目录添加文件。我知道PHP / Apache正在缓存包含文件,并且人们可能认为要运行
clearstatcache(true);
清除任何状态缓存。 PHP可能在其include();内部使用了file_exists,并认为新文件仍不存在。我尝试重新启动Apache,但没有效果。不幸的是,运行
clearstatcache(true);
也没有帮助。只有在删除MY_FRAMEWORK_ROOT / file后,它才会想到清除缓存并重试,从而找到MY_PRODUCT_ROOT / file。我有点困惑,我知道我们需要刷新PHP / Apache对文件是否存在的理解,但
clearstatcache(true);
没有帮助......有什么想法吗?
更新:更正,现在重新启动Apache似乎有帮助。我重申,这仅在尝试向MY_PRODUCT_ROOT添加文件以覆盖现有的MY_FRAMEWORK_ROOT文件进行自定义时发生。
更新:开发环境是Windows上的Zend Server CE PHP 5.3.14,生产环境是Centos Linux httpd,PHP 5.3+。我的开发环境启用了Zend优化器,这可能会产生影响,同时不使用APC或任何其他缓存脚本。