Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无需、无需包含、无需url重写,但脚本执行时不在url中_Php_Apache_Debugging_Legacy Code - Fatal编程技术网

Php 无需、无需包含、无需url重写,但脚本执行时不在url中

Php 无需、无需包含、无需url重写,但脚本执行时不在url中,php,apache,debugging,legacy-code,Php,Apache,Debugging,Legacy Code,我试图在一些遗留代码中跟踪执行流。我们有一份报告正在使用 http://site.com/?nq=showreport&action=view 这就是谜题: 在index.php中没有$\u GET['nq']或$\u GET['action'](并且没有 $\u请求 index.php,或它包含的任何源代码,不包括showreport.php 在.htaccess中,没有url重写 然而,showreport.php被执行 我可以访问服务器上的cPanel(但没有apache配置

我试图在一些遗留代码中跟踪执行流。我们有一份报告正在使用

http://site.com/?nq=showreport&action=view
这就是谜题:

  • index.php
    中没有
    $\u GET['nq']
    $\u GET['action']
    (并且没有
    $\u请求
  • index.php
    ,或它包含的任何源代码,不包括
    showreport.php
  • .htaccess
    中,没有url重写
然而,
showreport.php
被执行

我可以访问服务器上的cPanel(但没有apache配置文件),这是我无法随意使用的实时代码

是什么让这一切发生的?我应该去哪里看

更新
有趣的事情-在状态更新中向客户发送了一个指向此问题的链接,以使其保持循环;几分钟后,所有访问被撤销,客户通知我项目被取消。我相信我已经足够小心了,不会留下任何代码实际所在的痕迹

我现在松了一口气,但我也渴望知道这是什么

谢谢大家的时间和帮助。

我会安装并使用它来逐个查看它正在做什么

编辑:

好吧,只是个主意,但是。。。也许你的申请是一种地狱般的申请,有时我不得不在工作中搞砸?一个文件包含另一个文件,它包含另一个文件,并且该文件再次包含原始文件。。。所以,也许你的索引文件包含了一些最终导致这个文件被包含的文件

另一编辑:


或者,有时应用程序开发人员不知道什么是$\u GET变量,并且自己解析URL->doing manual includes based to based URL。

您确定查看的是正确的配置或服务器吗?如果您转到上面的url,您会看到一个错误页面,似乎表明该服务器实际上是microsoft iis服务器,而不是apache服务器。

检查您的crontab,[抱歉,我不知道您在cpanel中的何处可以找到它] -脚本是在特定时间启动的,还是只有在您请求特定页面时才会启动

-肖恩

编辑: 如果crontab不存在,请查看index.php[及其包含],并查找在url参数上循环的代码,而不特别注意“nq”和可能解析查询字符串的任何内容[可能类似于:$\u SERVER['query\u string']]


-sean

我不知道它是如何工作的,但我知道Wordpress/Silverstipe正在使用自己的url重写来解析url以查找帖子/标签等。因此url解析可能在PHP脚本中完成。

检查您的配置文件(PHP.ini和.htaccess),您可能已经设置了。

解析url的方法有“上百种”——在不同的层中(系统、httpd服务器、CGI脚本)。因此,无法用您获得的信息来具体回答您的问题

您留下了一个非常明确的提示“遗留代码”。我想您的意思是,您不想完全阅读代码,甚至不想理解它,甚至不想找到正在解析该参数的相关应用程序部分

不过,如果您留下一些提示,说明代码的“遗留性”是如何的,那就太好了:年龄、PHP版本目标等。这会有所帮助

并非总是使用
$\u GET
访问这些值(对于
$\u请求
也是如此,它们是近亲)

让我们看一下:

HTTP\u GET\u VARS

通过HTTP GET方法传递到当前脚本的变量的关联数组

脚本可能会使用这个数组吗?这只是一个猜测,在相当长的一段时间内,这是访问这些参数的有效方法

无论如何,这一定不是您搜索的内容。PHP中有一个经常被误解和误用(字面上被滥用)的功能。所以您可能只是在搜索
$nq

除此之外,还有请求uri和apache/environment/cgi变量。请参阅上面的PHP3手册链接,其中列出了许多变量。将其与当前手册进行比较,以获得更广泛的理解

在任何情况下,您都可以使用
grep
或多文件搜索(如果您需要检查某些IDE中的遗留代码,Eclipse有一个很好的内置版本)


因此,在一天结束时,您可能只需查找一个字符串,如
nq
'nq'
“nq”
$nq
。然后检查搜索结果。基于字符串的搜索是进入您根本不知道的代码库的一个很好的入口。

(或一次尝试。该输出类似于异常stacktrace的输出,因此它可以帮助您找出何时何地调用。如果您无法在本地开发系统上运行该应用程序,请确保没有其他人可以看到该输出

Apache访问日志可能会告诉您more@MikeB有n个o访问日志,有一个
access\u logs
目录是空的。
http://site.com/nq=showreport&action=view
-只要启用了xdebug(但未启用配置跟踪等功能),则在
showreport.php
?中尝试了
debug\u backtrace()
,这是否缺少
,您可以使用PHP函数为自己的请求启用它。我对刚刚启动的生产环境使用类似的调试;当发生PHP错误时,我可以通过这种方式获得更好的错误记录器。void xdebug_start_trace(字符串跟踪文件[,整数选项])在这里,这不是一个选项。这是一个实时统计网站,每秒点击率超过100次,不能被客户端严格禁止使用。你不能在开发环境中运行它吗?我唯一能想到的另一个选项是手动调试它,但那也不成问题。