【问题标题】:What is involved in PHP's startup sequence?PHP的启动顺序涉及什么?
【发布时间】:2017-09-11 21:39:24
【问题描述】:

关于display_startup_errors,PHP 手册说即使display_errors 处于打开状态,PHP 启动序列期间发生的错误也不会显示。那么PHP的启动顺序是什么意思呢?它涉及什么,那里会出现什么样的错误?一些常见的例子可能会有所帮助。

【问题讨论】:

  • 好吧,例如 php.ini 配置错误。应该执行的文件不可读。在实际解析任何 php 文件之前发生的那种事情。
  • 感谢 Jakumi,这是一个很好的例子。我也读过php.net/manual/en/configuration.file.php。但是,例如,PHP 的“启动序列”从哪里开始。我们如何判断它已经结束并且 php 文件的解析已经开始?启动与几个文件夹,模块和扩展等中的.htaccess之类的东西有什么关系?

标签: php apache


【解决方案1】:

display_startup_errors 抑制的最常见错误类型与 PHP 未能加载模块或模块因各种原因发出错误消息有关。

例如:

PHP 警告:PHP 启动:无法加载动态库 '/path/to/module.so' - /path/to/module.so:无法打开共享对象文件:在第 0 行的未知中没有此类文件或目录

这意味着 PHP 已配置为加载 module.so,但未找到,因此无法加载。

由于错误的 ini 配置值,模块也可能发出警告:

PHP 警告:PHP 启动:第 0 行的未知中的 session.name 不能是数字或空 ''

这是会话扩展发出的几个警告之一,在这种情况下,因为session.name 的配置值为数字或空。

PHP 的大部分启动顺序将围绕配置自身、加载动态模块、调用每个模块的 GINIT 和 PHP_MINIT_FUNCTION 以便它们进行初始化,然后运行 ​​PHP 的启动顺序。

这些事情发生的方式和时间取决于 PHP 在什么服务器 API 下运行。对于 Apache,这可能是一个 Apache 模块、FPM、CGI/FastCGI。

一些很好的参考文献是:

【讨论】:

  • ...所以启用/禁用display_startup_errors 永远不会影响编码错误,对吗?
猜你喜欢
  • 2023-03-14
  • 2016-07-12
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多