recherche

Maison  >  Questions et réponses  >  le corps du texte

Avertissement de configuration MySQL hérité : mysql_connect() : le fichier ou le répertoire n'existe pas

Chers développeurs, J'ai résolu le problème d'origine, mais si quelqu'un a une image Docker capable de l'exécuter, je lui en serais très reconnaissant. J'ai besoin d'aide avec une très ancienne application.

Je mets en place un environnement de machine virtuelle pour une ancienne application. Si vous envisagez d'aider, veuillez lire attentivement.

J'ai une ancienne application qui est sur le point d'être supprimée car nous effectuons une réécriture, mais l'ancienne application a encore besoin de support et elle exécute une très ancienne version de PHP et MYSQL. Le code ci-dessous devrait tester si la connexion à la base de données fonctionne correctement.

require_once("/var/www/html/class/autoload.php");
$database = $_ENV['DB_HOST'];
$DBuser = $_ENV["MYSQL_USER"];
$DBpass = $_ENV["MYSQL_USER"];
$link = mysql_connect($database, $DBuser, $DBpass, null);

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysql_error() . PHP_EOL;
    exit;
}

Le code s'est trompé et m'a donné le message d'erreur suivant :

Warning: mysql_connect(): No such file or directory in /var/www/html/docker_build/test_db.php on line 10
Error: Unable to connect to MySQL. Debugging errno: No such file or directory

Si j'utilise mysqli_connect dans le même bloc de code, tout fonctionne bien, mais le projet utilise mysql_functions. L'application fonctionne correctement sur les serveurs de transfert et de production, j'ai essayé de copier les paramètres sur ma machine virtuelle et c'était le fichier docker qui fonctionnait, mais certaines mises à jour de sécurité récentes l'ont empêché de fonctionner.

version: "3"

services:
  webserver:
    build: 
      context: ${DOCKER_BUILD_ROOT}/bin/${DOCKER_PHPVERSION}
    container_name: ${DOCKER_PHPVERSION}
    restart: 'always'
    ports:
      - "${HOST_MACHINE_UNSECURE_HOST_PORT}:80"
      - "${HOST_MACHINE_SECURE_HOST_PORT}:443"
    links: 
      - database
    volumes: 
      - ${DOCUMENT_ROOT-.}:/var/www/html
      - ${PHP_INI-./docker_build/config/php/php.ini}:/usr/local/etc/php/php.ini
      - ${VHOSTS_DIR-./docker_build/config/vhosts}:/etc/apache2/sites-enabled
      - ${APACHE_LOG_DIR-./docker_build/logs/apache2}:/var/log/apache2
    # user: "1000:1000"
    user: root
  database:
    build:
      context: "${DOCKER_BUILD_ROOT}/bin/${DOCKER_DATABASE}"
    container_name: 'database'
    restart: 'always'
    ports:
      - "${DOCKER_LOCALHOST}:${HOST_MACHINE_MYSQL_PORT}:3306"
    volumes: 
      - ${MYSQL_CONF_FILE-./docker_build/config/mysql/mysql.conf.d/mysqld.cnf}:/etc/mysql/mysql.conf.d/mysqld.cnf
      - ${MYSQL_DATA_DIR-./docker_build/data/mysql}:/var/lib/mysql
      - ${MYSQL_LOG_DIR-./docker_build/logs/mysql}:/var/log/mysql
      - ${MYSQL_INIT_DIR-./docker_build/config/mysql/ini}:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: 'phpmyadmin'
    links:
      - database
    environment:
      PMA_HOST: database
      PMA_PORT: 3306
      PMA_USER: ${MYSQL_USER}
      PMA_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - '8080:80'
    volumes: 
      - /sessions
      - ${PHP_INI-./docker_build/config/php/php.ini}:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
  redis:
    container_name: 'redis'
    image: redis:latest
    ports:
      - "${DOCKER_LOCALHOST}:${HOST_MACHINE_REDIS_PORT}:6380"
FROM php:5.6-apache

RUN apt-get -y update && apt-get upgrade -y

# Install tools && libraries
RUN apt-get -y install --fix-missing apt-utils nano wget dialog \
    build-essential git curl libcurl3 libcurl3-dev zip \
    libmcrypt-dev libsqlite3-dev libsqlite3-0 mysql-client \
    zlib1g-dev libicu-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
    && rm -rf /var/lib/apt/lists/*

# Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# PHP5 Extensions

RUN docker-php-ext-install curl \
    && docker-php-ext-install tokenizer \
    && docker-php-ext-install json \
    && docker-php-ext-install mcrypt \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install pdo_sqlite \
    && docker-php-ext-install mysql \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install zip \
    && docker-php-ext-install -j$(nproc) intl \
    && docker-php-ext-install mbstring \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && pecl install xdebug-2.5.5 && docker-php-ext-enable xdebug

# Enable apache modules
RUN a2enmod rewrite headers

RUN apt-get update && apt-get install -y \
    mediainfo \
    jhead \
    imagemagick \
    ffmpeg

RUN usermod -u 1000 www-data

EXPOSE 80

# initialize server script. designed to be run after volumes are mounted.
# runs composer install and runs apache2 foreground.
# ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
ENTRYPOINT ["./docker_build/config/server_ini.sh"]

J'ai juste besoin de le faire fonctionner. Ce serait parfait si cela pouvait être fait en utilisant Docker, mais je pense que cette image est obsolète. Toute aide est grandement appréciée. Je peux vous fournir les paramètres env et .ini. Je ne veux pas trop entrer dans la question.

J'ai tout essayé, regardé .ini et .env et tous les paramètres Linux. Il semble que le socket mysql ne soit pas configuré correctement, mais la connexion en ligne de commande mysql -uroot -p fonctionne bien.

P粉720716934P粉720716934317 Il y a quelques jours502

répondre à tous(1)je répondrai

  • P粉693126115

    P粉6931261152024-01-17 10:21:43

    La question a fini par être une faute de frappe. J'ai dû mettre à jour le mien .env文件,将DB_HOST="localhost:3306"改为DB_HOST="127.0.0.1:3306" et puis ça a fonctionné. J'espère que cela aide quelqu'un.

    répondre
    0
  • Annulerrépondre