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