现在我被 file_exists() 函数困住了。我的项目是从存储库构建的,一个被符号链接为 DocRoot,其他的可以通过 include_path 用于 php 解释器。但是默认的 file_exists() 无法查看文件放置在 include_path 下的某个位置,因此我需要或以某种方式用包装器重新定义此 func 或编写我自己的,将其包含在其他模块中并替换目录树中此 func 的所有匹配项. 这是可能的,但效果不好,开发人员也不清楚。
我已经看过 pecl-apd (2008) 和 pecl-runkit (2007),但是在我的 gentoo 存储库或叠加层中没有更多这样的 pecl。那么,如何以现代的方式重新定义一个函数呢?
==更新===
好的。让我们更深入。
假设我们有/home/me/repos/
目录,放置我们的 git 模块和一个虚拟主机/var/srv/domain.com
,所有内容都在其中组装
repos_
\_site_root_
\_.git
\_file1
\_module1_
\_.git
\_we_need_this_file_too
\_module2_
\_.git
domain.com_
\_htdocs –> ~/repos/site_root
\_tmp
所以我们需要以某种方式将具有模块 1 和 2 的文件夹包含到项目中。然后通过 vhost config 将 ~/repos 的路径添加到 php include_path
php_admin_value include_path ".:/home/me/repos"
现在php可以
include ('module1/we_need_this_file_too');
从我的回购目录。但是当它尝试在包含 file_exists() 之前检查文件时,它会失败,因为这些目录仍然为 file_exists() 关闭。这就是问题。
现在我找到了使用绝对路径的解决方法,无论如何我必须在我的项目中创建一个个人配置。我也打算/home/me/repos/
在需要时将 chdir() 放入(并<Directory>
在 vhost 中描述部分),但这是个坏主意。