Zend Framework с Docker, данные нулевые - PullRequest
0 голосов
/ 13 февраля 2020

Я пытался докернизировать свой сайт с помощью PHP, MariaDB и Apache.

На самом деле docker работает, никаких ошибок внутри и хорошая связь между каждой службой.

Но я получаю сообщение об ошибке с PDO (SQL Синтаксис).

$auth = new Auth();
$this->_auth = $auth->getIdentity();
  • Когда я печатаю $ auth с print_r, я получаю большой массив, который я не могу напечатать полностью, внутри что-то есть.

  • Когда я печатаю $ this -> _ auth, я получаю только одну строку, которая несовместима с моей остальной программой.

Части, которые могут помочь понять:

Notice: Trying to get property of non-object in /var/www/html/module/MyProject/src/MyProject/Model/MenuTable.php on line 33

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND d.TableRef = 'page') OR page.Publique = 1) AND Deconnecte = 1 ORDER BY `Ordr' at line 9' in /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php:240 Stack trace: #0 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php(240): PDOStatement->execute() #1 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(233): Zend\Db\Adapter\Driver\Pdo\Statement->execute() #2 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(208): Zend\Db\TableGateway\AbstractTableGateway->executeSelect(Object(Zend\Db\Sql\Select)) #3 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/Abs in /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php on line 245

Строка MenuTable 33

$idInscrit = (isset($idInscrit) ? $idInscrit : (isset($this->_auth) ? $this->_auth->IDInscrit : 0));

Часть кода, в которой возникает ошибка PDO.

                    ->where("(page.IDPage IN (
                                SELECT d.IDLigne
                                FROM inscrit i
                                JOIN lien_inscrit_role lir ON lir.IDInscrit = i.IDInscrit
                                JOIN lien_droit_role ldr ON ldr.IDRole = lir.IDRole
                                JOIN droit d ON d.IDDroit = ldr.IDDroit
                                JOIN page p ON p.IDPage = d.IDLigne
                                WHERE i.IDInscrit = $idInscrit
                                AND d.TableRef = 'page')"
                            . " OR page.Publique = 1)");

docker -compose.yml

version: '3.2'
services:
    mariadb:
        build: ./mariadb
        container_name: mariadb
        restart: always
        ports:
          - '3306:3306'
        environment:
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
          - TZ=Europe/London

    php:
        build: ./php-fpm
        container_name: php
        ports:
            - '9002:9000'
        links:
            - mariadb
        volumes:
          - .:/var/www/html/

    apache:
        build: .
        container_name: apache
        links:
          - mariadb
          - php
        volumes:
          - .:/var/www/html/
        ports:
          - '8085:80'

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mariadb
        ports:
            - '8183:80'
        environment:
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - PMA_HOST=mariadb

Я пытался локально, когда я печатаю $ this -> _ auth, я получаю массив, это то, что я ищу для docker, и это работает.

Я думаю, что проблема связана с платформой или соединением между базой данных и сервером.

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...