【问题标题】:Make PHP-FPM a drop-in replacement for PHP-CLI使 PHP-FPM 成为 PHP-CLI 的替代品
【发布时间】:2018-01-04 19:27:48
【问题描述】:

我有一个基于 Centos 7 的简约 Web 服务器,运行 PHP-FPM 7.1。我需要从命令行 (CLI) 运行一些 PHP 脚本。我不是这些脚本的创建者,它们会随着时间而改变。 简单的解决方案是在服务器上安装 PHP-Cli 并完成它,但这似乎有点浪费,因为我已经有了 PHP-FPM(从命令行运行 PHP-FPM 也很有帮助)访问一些不在两个 PHP 版本之间共享的缓存)。

我知道我可以使用 PHP-FPM 从命令行执行文件,但我想知道是否可以创建一个 bash 脚本或其他东西,作为替代PHP-Cli 通常是从命令行运行的吗?因此,通常由 PHP-Cli 运行的所有内容都将由 PHP-FPM 运行,而无需在调用中进行任何特殊定制。

在我的示例中,我是否有一个文件,该文件已获得执行权限,以“#!/usr/bin/php”开头,其余为 PHP。 例如,是否有可能创建一个调用 PHP-FPM 的脚本并将其保存为 /usr/bin/php?一些问题是在调用 PHP-FPM 时自动添加所有需要的参数(SCRIPT_NAME、SCRIPT_FILENAME、QUERY_STRING、DOCUMENT_ROOT、REQUEST_METHOD 等)

我希望你能看到我的想法,并能看到我思考过程中的任何错误并回答主要问题。

这里有一些关于从命令行使用 PHP-FPM 的信息:https://easyengine.io/tutorials/php/directly-connect-php-fpm/

【问题讨论】:

  • 您是否考虑过将这些脚本“网络化”?您可以添加一些检查以确保请求来自localhost,然后只需使用curlwget 或其他方式调用。与直接执行脚本相比,它的开销稍大一些,但是——因为我假设你有意避免使用 cgi-fcgi 路由——将完全避免对 php-cli 的需求
  • 我不想更改脚本,因为它们可以稍后更新。

标签: php linux


【解决方案1】:

经过更多的研究和测试后,我是否放弃了尝试使其与 PHP-FPM 一起使用并简单地安装 PHP CLI 并将其与脚本一起使用。

我遇到的问题是在使用 PHP-FPM 时无法将 $argv 参数设置/传递给 php 脚本。您只能设置 get/post 变量,因此创建为由 PHP CLI 运行的使用此类参数的 PHP 脚本不能由 PHP-FPM 从命令行运行。 如果您自己创建脚本,那么您可以围绕它进行构建,但如果您不这样做并且不想修改它们,那么您将陷入困境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2017-07-12
    • 2016-10-17
    • 2011-05-29
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多