与将 PHP 作为 Apache 模块运行相比,将 PHP 作为 CGI 二进制文件运行有哪些好处? 有哪些好处:
- 安全福利?
- 稳定效益?
- 性能优势?
我一直将 PHP 安装和使用为 Apache 模块,因此我很好奇是否有理由在未来的工作中使用 PHP 作为 CGI 二进制文件......
谢谢!
答案1
当 PHP 用作模块时,它或多或少会被编译到 Apache 的代码本身中。它会在每个请求中加载,这意味着即使是图像、脚本、样式表和任何其他非 PHP 文件也会加载它。这会使这些页面的访问速度变慢。另一方面,它会使 PHP 速度更快,因为 Apache 不必生成额外的进程。
当 PHP 用作 CGI 二进制文件时,它更安全,但速度较慢。Apache 可以在不同的用户下生成进程,例如,这可以提高共享托管环境的安全性。它还提高了稳定性,因为 PHP 进程与 Apache 进程是分开的,如果发生段错误或其他严重崩溃,PHP 进程不会影响 Apache。将 PHP 用作 CGI 意味着您不能使用.htaccess
文件配置 PHPphp_flag
或php_value
。
问题是,什么对你更重要?速度还是安全。
如果您在 Google 上搜索在 CGI 或模块中使用 PHP 的好处,我相信您会找到很多很棒的文章,这些文章可能涵盖了我可能错过的内容。
答案2
通常您有 3 个选项: - php 作为 web 服务器的模块(apache 或 iis)-> mod_php - cgi(每次启动二进制文件的旧样式) - fast-cgi(更优化的二进制文件)
我们所说的 fast-cgi 是指 apache 的 fast-cgi,没有任何 fpm 代理等。
在两种 CGI 模式下,您的 HTTP 身份验证脚本都将无法工作。
Fastcgi 比 CGI 更好 ——@see gugl,但可能会发生 500 错误。
从稳定性和性能来看,mod_php 更胜一筹。