我希望在Apache子进程中处理PHP请求之前在初始化时在Apache中运行一些代码。这必须在Apache父级中发生。它会设置一些新的全局变量。
当孩子跑步时,会有这些新变量准备就绪并等待。
APC(等)不是一个选项,因为此代码运行起来很昂贵。
我正在努力避免编写PHP模块。
答案 0 :(得分:2)
就个人而言,我将php_value auto_prepend_file config.inc.php
放在.htaccess(或httpd.conf)中,以便在执行任何PHP脚本以设置我的全局变量之前运行config.inc.php。
请注意,这是在每个请求上运行的,因此,如果它是一个大型安装脚本,则会很昂贵。
此外,如果将PHP安装为CGI,这将不起作用,在这种情况下,您需要在php.ini中设置auto_prepend_file
设置。
答案 1 :(得分:2)
最好的方法是通过daiscog告诉使用自动前置。如果由于某种原因需要在apache中设置它,可以使用环境变量传递它们:
根据需要使用apache设置它们https://httpd.apache.org/docs/2.2/env.html,并使用$ _ENV在PHP中访问它们 - 虽然这显然不适用于像“数组”这样的“复杂”php变量,但是您可以使用它来传递来自apache的字符串到php。
答案 2 :(得分:1)
Apache本身无法执行预加载的PHP代码并为每个父级设置变量。它是一个已编译的应用程序,它只通过服务器api执行PHP代码,它与PHP内存的共享并不多。这基本上是两个世界。
然而,有效的是用PHP构建的网络服务器。这样的Web服务器可以在HTTP请求之间保存变量。事实上所有全局变量。因此,您的代码必须与该模式兼容,并干净地关闭应该卸载的部分(代码永远不会被卸载,只有未设置的全局变量)。
这样的网络服务器是appserver-in-php。
但是我并不完全理解你想要什么/为什么/为什么要阻止编写PHP模块(以及哪种?编译?在用户空间?)。