Docker PDO error, na čistém PHP je ale OK

Tomáš Mynář
Člen | 5
+
0
-

Zdravím,

dokázal by mě někdo, prosím nakopnout co přehlížím, ať už v kódu či na Googlu?

Jde o to, že mi Tracy vypisuje error při pokusu o přihlášení k DB, že nemůže najít PDO knihovnu, která ale nainstalována je. Pokud zkouším připojení k DB v čistém PHP (přímo v index.php) tak se ale v pořádku připojí.

Pomocí Adminera se normálně k DB dostanu.

Zkoušel jsem i nejnovější verzi MySQL, ale četl jsem, že jsou tam nějaké problémy s Dockerem, takže jsem pro jistotu na rozjetí přešel na 5.6, pak i MariaDB a stejně pořád nic.

Moc díky všem za přínosné poznámky a hlavně za váš čas!

docker-compose.yml

version: '3.8'

services:
  web:
    build: docker
    volumes:
      - ./:/var/www/html
      - ./docker/apache/sites-enabled:/etc/apache2/sites-enabled
    ports:
      - 8080:80
    environment:
#      PHP_IDE_CONFIG: serverName=localhost
      DOCKER_DEV: 'true'
#    links:
#      - database

  database:
    image: mysql:5.6
#    restart: always
#    ports:
#      - 3309:3306
    environment:
      MYSQL_ROOT_PASSWORD: lucka
      MYSQL_USER: lucka
      MYSQL_PASSWORD: lucka
      MYSQL_DATABASE: lucka
#    volumes:
#      - ./docker/mysql:/docker-entrypoint-initdb.d:cached,ro
    #      - ./dump:/docker-entrypoint-initdb.d
#      - persistent:/var/lib/mysql
    networks:
      - default

  adminer:
    image: adminer:latest
    ports:
      - 8081:8080

  composer:
    image: composer:latest
    volumes:
      - ./:/app
    working_dir: /app
    command: composer install --ignore-platform-reqs

docker/Dockerfile

FROM php:7.2-apache

RUN a2enmod rewrite
RUN docker-php-ext-install mysqli pdo pdo_mysql

local.neon

parameters:

database:
	dsn: 'database:host=database;dbname=lucka'
	user: 'lucka'
	password: 'lucka'

docker/apache/sites-enabled/default.conf

<VirtualHost *:80>
    DocumentRoot "/var/www/html/www"
    ServerName _
</VirtualHost>

Pro Docker pak
docker-compose down
docker-compose up –build -d

CZechBoY
Člen | 3608
+
0
-

Ukaz jak se pripojujes rucne a chybu co pise Nette.

Tomáš Mynář
Člen | 5
+
0
-

Připojení jen přes PHP

	try {
		$db = new PDO('mysql:host=database;dbname=lucka', 'lucka', 'lucka');
		echo "Connected!";
	} catch (\PDOException $e) {
		echo $e->getMessage();
	}

Tracy
Nette\Database\ConnectionException could not find driver
Viz. screen co vypsala Tracy, doufám, že stačí takto.

kalatalabnik
Člen | 35
+
+3
-

Nechybí ti v dsn zmínka o MySQL?
Tak jak to máš u připojení přes čisté PHP?

CZechBoY
Člen | 3608
+
+2
-

jo, misto database ma byt mysql

Tomáš Mynář
Člen | 5
+
+1
-

kalatalabnik napsal(a):

Nechybí ti v dsn zmínka o MySQL?
Tak jak to máš u připojení přes čisté PHP?

Wow, jo to je přesně ono! Takový krtek zakopaný, co jsem pořád přehlížel. Díky moc! Ja si tu trhal už vlasy pomalu.

CZechBoY
Člen | 3608
+
0
-

no jo, could not find driver, ono ti to PDO dokonce píše :)