【发布时间】:2018-06-10 19:10:25
【问题描述】:
短故事:我正在寻找解决 PHP $_SERVER[] 变量不可用(仅)在从 Windows 任务计划程序计划事件运行 PHP 脚本文件的情况下的解决方法。
我有两台 Windows 2008 R2 服务器,两台服务器上都运行 PHP 版本 7.1。我一直将服务器#1 称为“生产”,将服务器#2 称为“开发”。每台服务器都有自己的 MySQL 数据库。
在我一直在写的页面上,对于 MySQL db 读/写,我一直在使用 $_SERVER['SERVER_NAME'] 来识别正在运行脚本的服务器(如果页面在开发服务器上运行,使用开发服务器上MySQL db的IP地址。如果当前服务器是生产服务器,使用生产数据库IP)。
这对我来说非常好。例外情况是当我使用 Windows 任务计划程序来计划自动化任务时。在这种情况下,我正在创建一个独立的 PHP 脚本文件来发送一封电子邮件,其中包含来自该数据库的一些信息。
用于发送包含数据库中一些信息的电子邮件的 PHP 脚本文件导致:
- 在浏览器中运行页面会导致 $_SERVER['SERVER_NAME'] 被定义(效果很好)。
- 如果 Windows 任务调度程序运行 PHP 页面这会导致 $_SERVER['SERVER_NAME'] 未被定义
有谁知道我如何使 $_SERVER[] 变量可用于由 Windows Scheduled Taks 运行的 .php 文件(其中任务调度程序当然指向 PHP.exe 并带有该脚本的裁判。 php 文件)?或者,除了 $_SERVER[] 变量之外,还有其他方法来检测正在运行脚本的服务器的名称吗?
【问题讨论】:
-
这与任务调度器关系不大。在 CLI 中运行的脚本也永远不会有任何可用的 HTTP 服务器环境变量。使用包装脚本或其他东西。
-
这就是我所做的:我的计划任务是小型 php 脚本,它们使用 curl 向服务器发出 http 请求,用于为每个任务设计的特定
apiservlet。 -
不错。谢谢。
-
你放弃了吗?