我的PHP如何识别它是通过Docker还是Xampp运行的



我有一个PHP登录系统,应该同时在XAMPP和Docker上运行。我的数据库需要本地存储。

我创建我的容器和图像如下:

图片:dockerbuild-tphp。容器:docker run-dp 9000:80--名称php应用程序php

<?php
$host = "host.docker.internal"; // need to be that or 'localhost'
$name = "test";
$user = "root";
$passwort = "";
try {
$mysql = new PDO("mysql:host=$host;dbname=$name", $user, $passwort);
}
catch (PDOException $e) {
echo "SQL Error: ".$e->getMessage();
}

>

我从哪里获得有关我正在运行哪个系统以使该值动态的信息?

您可以通过以下方式检查您是否在Docker内部:

function isDocker(): bool
{
return is_file("/.dockerenv");
}

我还没有在windows系统上工作过,但在Linux中,你可以检查进程,并使用docker或不使用docker找到进程执行。

$processes = explode(PHP_EOL, shell_exec('cat /proc/self/cgroup'));
// Check process folder path and pass here
$processes = array_filter($processes);
$is_docker = true;
foreach ($processes as $process) {
if (strpos($process, 'docker') === false) {
$is_docker = false;
}
}

然后你可以根据自己的需要来实施。

if($is_docker === true){
// Do something
}

最新更新