我设法为php编写了一个小型的,可编译的扩展,可以在每个ZEND_RINIT上打印"test"。
我用一个加载多个其他文件的 php 文件对其进行了测试,这些文件再次加载其他文件 [...]。问题是,扩展名只打印"test"一次,所以我假设它不会在每次加载新文件时触发,我怎样才能让我的扩展名这样做?
此外,该事件在加载文件之前触发,这就是我想要的,但因此 zend_get_executed_filename() 为空,我无法获取文件内容......
我的最终目标是在执行脚本之前验证每个文件。我计划通过验证附加到文件的文件签名来做到这一点。
伪代码验证:
decrypt(signature, rsa.pub) = sha(filecontent)
伪代码签名:
signature = encrypt(sha(filecontent), rsa.priv)
file += signature
或者有没有更好的方法来验证文件(我希望它们被签名)在执行其中的脚本之前?
提前感谢!
请求启动时调用,也就是当你执行php文件时。在执行 PHP 文件期间,它永远不会再次调用。仅在下次启动时。你必须找到一种方法来挂钩到PHP的所有文件加载函数。