提问人:Mike 提问时间:6/11/2023 最后编辑:Mike 更新时间:6/11/2023 访问量:79
旧版 MYSQL 设置 警告:mysql_connect():没有这样的文件或目录
LEGACY MYSQL SETUP Warning: mysql_connect(): No such file or directory
问:
各位开发者: 我已经解决了最初的问题,但如果有人有一个可以运行它的 docker 映像,我将不胜感激。 我需要有关一个非常旧的应用程序的帮助。
我正在为旧应用程序设置 VM 环境。如果您打算提供帮助,请仔细阅读。
我有一个旧的应用程序,在我们进行重写时很快就会被扔掉,但是旧应用程序仍然需要支持,并且它运行非常旧版本的 PHP 和 MYSQL。下面的代码应该测试数据库连接是否有效。
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;
}
代码中断给了我
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
如果在同一个代码块中,我使用 istead 一切正常,但项目在 mysql_functions上运行。该应用程序适用于暂存服务器和生产服务器,我尝试在我的 VM 上复制设置,这里也是曾经工作的 dockerfile,但最近一些安全更新阻止了它的工作。mysqli_connect
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"]
我所需要的只是启动并运行它。如果可以用 docker 完成,那将是完美的,但我认为该图像早已被弃用。任何帮助都非常感谢。我可以为您提供环境和.ini设置。我不想在这个问题上过多地拖延。
我尝试了一切,我查看了 .ini 和 .env 以及所有 linux 设置。看起来MySQL套接字没有正确设置,但是cmd连接工作正常mysql -uroot -p
答:
0赞
Mike
6/11/2023
#1
这个问题最终是一个错别字。我必须更新我的,而不是我必须放,它起作用了。希望这对任何人有所帮助.env
DB_HOST="localhost:3306"
DB_HOST="127.0.0.1:3306"
上一个:筛选用户所属学校的数据
评论