Ich bin neu bei Docker und habe versucht, herauszufinden, wie ich mit meinem PHP-Verbindung mit MariaDB verbinden kann, ohne Erfolg.Docker kann keine Verbindung zu Mariadb mit PHP
Ich habe versucht, auf Stackoverflow und Google zu suchen, aber konnte keine nützlichen Informationen finden, so hoffe ich, dass Sie mir helfen könnten.
Die seltsame Sache ist, dass, wenn ich versuche, Verbindung zu MariaDB mit JetBrains DataGrip mit localhost, mysql, root, admin Ich kann eine Verbindung zur Datenbank, aber nicht mit PDO.
Ich hoffe wirklich, dass Sie mir helfen konnten, danke für Ihre Zeit.
Hier sind folgende Projektdateien:
Das ist mein Docker-compose.yml Datei
version: "3.1"
services:
nginx:
image: nginx:alpine
container_name: nginx
volumes:
- ./config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
links:
- php
php:
image: php:7.1-fpm
container_name: php
links:
- mariadb:mysql
volumes:
- ./public:/public
ports:
- "9000:9000"
mariadb:
image: mariadb:10.1
container_name: database
environment:
MYSQL_ROOT_PASSWORD: admin
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
links:
- mariadb
ports:
- 8183:80
environment:
PMA_HOST: mariadb
PMA_USER: root
PMA_PASSWORD: admin
PMA_ARBITRARY: 1
Meine nginx.conf Datei:
server {
listen 80 default;
client_max_body_size 108M;
access_log /var/log/nginx/application.access.log;
root /public;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
Und meine index.php
<?php
$servername = "localhost";
$username = "root";
$password = "admin";
$database = "mysql";
try {
$conn = new PDO("sqlite:host=".$servername.";dbname=" . $database, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $conn->prepare("SELECT * FROM testDB");
$sql->execute();
while($result = $sql->fetch(PDO::FETCH_ASSOC)){
$result['myTestData'];
}
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Vielleicht sollten Sie 'sqlite' in' mysql' ändern in Ihrem DSN – Bart
Ich habe das versucht, bekomme ich die Treiber nicht gefunden Nachricht. – user3626278
Also müssen Sie pdo mysql Treiber installieren/aktivieren – Bart