【问题标题】:PHP: unable to locate functions being used (seemingly not defined)PHP:无法定位正在使用的函数(似乎没有定义)
【发布时间】:2014-08-13 17:22:29
【问题描述】:

我在看别人的代码。有类调用诸如GetSku()WriteOrder($order) 等函数,但我无法找到这些函数的位置。我已经检查过……

  • 其他脚本或类包含:未定义显式或魔术函数 (__call)
  • grep -rHn "n *GetSku" /path/to/codebase:不返回任何内容
  • Sublime 的 cTag:没有找到
  • 原开发者知识库:我发邮件请求他返回错误

这些神秘的函数,字面意思是……

$sku = GetSku();
WriteOrder($order);

什么可以定义并且它们起作用?以某种方式自定义魔术功能?某种动态功能?我像猴子一样用 iPhone 挠头。

【问题讨论】:

  • 什么给了你grep -rHn "n *GetSku" /path/to/codebase
  • 任何体面的 IDE 都可以跳转到定义,使用现代 IDE
  • 你也应该做一个 phpinfo();并找到可以包含其他文件的位置。然后也扫描这些目录。 PHP 确实有一个 PATH 环境变量,用于包含来自外部共享资源(如 PEAR)的内容。
  • 搜索所有文件夹>在此处插入时尚 meme 图片

标签: php class magic-function


【解决方案1】:

也许该类包含在包含一些外部库的 php 文件中?这些函数可能取自这些库。

【讨论】:

  • 我确实找到了一个完全混淆的 PHP 文件,它必须是我想要修改的进程的入口点。它很可能包括与该进程相关的所有普通 PHP 文件。但是,就修改它而言,这对我来说似乎是一条死胡同。还是谢谢!
【解决方案2】:

如果在 php.ini 中设置了这个属性,你能检查一下实际的服务器吗?

auto_prepend_file 

指定在主文件之前自动解析的文件名。该文件被包含,就好像它是用 require 函数调用的一样,因此使用了 include_path。

特殊值 none 禁用自动前置。

这可能是如何从项目范围之外的外部文件加载不存在的函数的方法。

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2013-12-29
    • 2016-03-15
    相关资源
    最近更新 更多