Rumah  >  Soal Jawab  >  teks badan

Amaran persediaan MySQL warisan: mysql_connect(): fail atau direktori tidak wujud

Pemaju yang dihormati, Saya telah menyelesaikan masalah asal, tetapi jika sesiapa mempunyai imej docker yang boleh menjalankan ini, saya akan sangat berterima kasih. Saya memerlukan bantuan dengan aplikasi yang sangat lama.

Saya sedang menyediakan persekitaran mesin maya untuk aplikasi lama. Jika anda bercadang untuk membantu, sila baca dengan teliti.

Saya mempunyai aplikasi lama yang akan dibuang kerana kami sedang melakukan penulisan semula, tetapi aplikasi lama masih memerlukan sokongan dan ia menjalankan versi PHP dan MYSQL yang sangat lama. Kod di bawah harus menguji sama ada sambungan pangkalan data berfungsi dengan betul.

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

Kod menjadi salah dan memberi saya mesej ralat berikut:

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

Jika saya menggunakan mysqli_connect dalam blok kod yang sama, semuanya berfungsi dengan baik, tetapi projek itu menggunakan mysql_functions. Aplikasi ini berjalan dengan baik pada pelayan pementasan dan pengeluaran, saya cuba menyalin tetapan ke mesin maya saya dan ini adalah fail docker yang pernah berfungsi, tetapi beberapa kemas kini keselamatan terkini menyebabkan ia tidak berfungsi.

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

Saya hanya perlu membuatnya berfungsi. Ia akan menjadi sempurna jika ia boleh dilakukan menggunakan docker, tetapi saya fikir imej itu sudah lapuk. Sebarang bantuan amatlah dihargai. Saya boleh memberikan anda tetapan env dan .ini. Saya tidak mahu menampal terlalu banyak ke dalam soalan.

Saya mencuba segala-galanya, melihat .ini dan .env dan semua tetapan Linux. Nampaknya soket mysql tidak disediakan dengan betul, namun sambungan baris arahan mysql -uroot -p adalah baik.

P粉720716934P粉720716934277 hari yang lalu466

membalas semua(1)saya akan balas

  • P粉693126115

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

    Soalan itu akhirnya menjadi salah taip. Saya terpaksa mengemas kini saya .env文件,将DB_HOST="localhost:3306"改为DB_HOST="127.0.0.1:3306" dan kemudian ia berjaya. Harap ini membantu sesiapa sahaja.

    balas
    0
  • Batalbalas