在解析PHP文件之前对其进行操作

时间:2015-02-04 00:26:07

标签: php php-extension

我已经设法为php编写了一个小的,可编译的扩展,可以打印" test"在每个ZEND_RINIT上。

我用一个加载了多个其他文件的php文件进行了测试,这些文件又加载了其他文件[...]。问题是,扩展只是打印"测试"一次,所以我假设每次加载新文件时都不会触发,我怎么能让我的扩展名呢?

此外,事件在加载文件之前被触发,这就是我想要的,但因此zend_get_executed_filename()为空,我无法获取文件内容......

我的最终目标是在执行脚本之前验证每个文件。我计划通过验证附加到文件的文件签名来实现这一目的。

伪代码验证:

decrypt(signature, rsa.pub) = sha(filecontent)

伪代码签名:

signature = encrypt(sha(filecontent), rsa.priv)
file += signature

或者在执行脚本之前是否有更好的方法来验证文件(我希望它们被签名)?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在请求启动时调用ZEND_RINIT,即执行php文件时。在执行PHP文件期间永远不会再调用它。仅在下次启动时。 您必须找到一种方法来挂钩PHP的所有文件加载函数。