Legacy-MySQL-Setup-Warnung: mysql_connect(): Datei oder Verzeichnis existiert nicht
P粉720716934
P粉720716934 2024-01-16 19:08:53
0
1
390

Liebe Entwickler, Ich habe das ursprüngliche Problem gelöst, aber wenn jemand ein Docker-Image hat, das dies ausführen kann, wäre ich sehr dankbar. Ich brauche Hilfe bei einer sehr alten Anwendung.

Ich richte eine virtuelle Maschinenumgebung für eine alte Anwendung ein. Wenn Sie helfen möchten, lesen Sie es bitte sorgfältig durch.

Ich habe eine alte Anwendung, die demnächst verworfen wird, weil wir sie neu schreiben, aber die alte Anwendung benötigt noch Unterstützung und sie läuft mit einer sehr alten Version von PHP und MYSQL. Der folgende Code soll testen, ob die Datenbankverbindung ordnungsgemäß funktioniert.

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;
}

Der Code ging schief und gab mir die folgende Fehlermeldung:

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

Wenn ich mysqli_connect im selben Codeblock verwende, funktioniert alles gut, aber das Projekt verwendet mysql_functions. Die Anwendung läuft einwandfrei auf Staging- und Produktionsservern. Ich habe versucht, die Einstellungen auf meine virtuelle Maschine zu kopieren, und dies war die Docker-Datei, die früher funktionierte, aber einige aktuelle Sicherheitsupdates führten dazu, dass sie nicht funktionierte.

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"]

Ich muss es nur zum Laufen bringen. Es wäre perfekt, wenn es mit Docker möglich wäre, aber ich denke, dass das Bild veraltet ist. Jede Hilfe wird sehr geschätzt. Ich kann Ihnen die Env- und .ini-Einstellungen zur Verfügung stellen. Ich möchte nicht zu viel in die Frage einfügen.

Ich habe alles versucht, mir .ini und .env und alle Linux-Einstellungen angeschaut. Es sieht so aus, als ob der MySQL-Socket nicht richtig eingerichtet ist, aber die Befehlszeilenverbindung mysql -uroot -p ist in Ordnung.

P粉720716934
P粉720716934

Antworte allen(1)
P粉693126115

问题最终是一个打字错误。我不得不更新我的.env文件,将DB_HOST="localhost:3306"改为DB_HOST="127.0.0.1:3306",然后它就可以工作了。希望这对任何人有所帮助。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!