我有一个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
}