PHP: 一致识别本地服务器
PHP: Identifying the local server consistently
我有一个要部署到多个服务器的代码库。
我需要确定代码 运行 在哪个服务器上,以便为数据库等使用正确的配置信息。
我最初尝试使用 DOCUMENT_ROOT 并检查帐户名。
if (strpos($_SERVER['DOCUMENT_ROOT'], '/var/www/vhosts/SOMETHING.com/') !== false)
{ //is a specific server }
这很好用,但是我发现当我的 cron 作业执行时 DOCUMENT_ROOT 是空的,当从 Plesk 启动时。
是否有更好的方法来识别服务器?
我不希望有特定于服务器的配置文件,因为确保所有文件在所有服务器上都相同的 FTP 同步软件不支持排除某些文件。
另外,服务器可能 运行 不同的控制面板和设置,所以我希望尽可能通用。
您可以在设置 cron 作业时将服务器名称作为命令行参数传递。
我通过 cron 发现 $_SERVER['HOME'] 与 DOCUMENT_ROOT 相同。
这对 cron 的 plesk 和 cpanel 实现同样有效。
我相信这比通过 cron 命令传递参数要好,因为我仍然需要对其进行测试,并且还必须为每个服务器设置 cron,而不是在脚本中处理它。
我有一个要部署到多个服务器的代码库。
我需要确定代码 运行 在哪个服务器上,以便为数据库等使用正确的配置信息。
我最初尝试使用 DOCUMENT_ROOT 并检查帐户名。
if (strpos($_SERVER['DOCUMENT_ROOT'], '/var/www/vhosts/SOMETHING.com/') !== false)
{ //is a specific server }
这很好用,但是我发现当我的 cron 作业执行时 DOCUMENT_ROOT 是空的,当从 Plesk 启动时。
是否有更好的方法来识别服务器?
我不希望有特定于服务器的配置文件,因为确保所有文件在所有服务器上都相同的 FTP 同步软件不支持排除某些文件。
另外,服务器可能 运行 不同的控制面板和设置,所以我希望尽可能通用。
您可以在设置 cron 作业时将服务器名称作为命令行参数传递。
我通过 cron 发现 $_SERVER['HOME'] 与 DOCUMENT_ROOT 相同。
这对 cron 的 plesk 和 cpanel 实现同样有效。
我相信这比通过 cron 命令传递参数要好,因为我仍然需要对其进行测试,并且还必须为每个服务器设置 cron,而不是在脚本中处理它。