gpt4 book ai didi

php - 使用 MySQL 套接字文件的自定义位置设置 PHP - mysql.default_socket 与 MYSQL_SOCKET

转载 作者:行者123 更新时间:2023-11-29 02:57:18 26 4
gpt4 key购买 nike

我在 Linux 上运行 mysql-5.6.23 和 php-5.6.7 以及 httpd-2.4.12 并试图查看 phpinfo() 显示我在主 php 中指定的正确的自定义 MySQL 套接字文件位置.ini 文件:

mysql.default_socket = /home/stephane/programs/mysql/install/tmp/mysql.sock

但即使在服务器重新启动后,phpinfo() 仍会继续显示股票值(value):

MYSQL_SOCKET    /tmp/mysql.sock

下面是我如何编译这些软件的。

对于 PHP:

./configure \
--prefix=/home/stephane/programs/install \
--with-apxs2=/home/stephane/programs/install/apache/bin/apxs \
--with-config-file-path=/home/stephane/programs/php-5.6.7 \
--enable-libgcc \
--with-mysql=/home/stephane/programs/mysql/install \
--with-zlib-dir=/usr \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr \
--enable-ftp \
--enable-xml \
--enable-zip \
--with-bz2 \
--enable-wddx \
--without-pear \
--enable-mbstring \
--with-curl

对于 MySQL:

cmake \
-DCMAKE_INSTALL_PREFIX=/home/stephane/programs/mysql/install \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/home/stephane/programs/mysql/install/data

scripts/mysql_install_db \
--no-defaults \
--explicit_defaults_for_timestamp \
--basedir=/home/stephane/programs/mysql/install \
--datadir=/home/stephane/programs/mysql/install/data \
--tmpdir=/home/stephane/programs/mysql/install/tmp \
--lc-messages-dir=/home/stephane/programs/mysql/install/share

我不会使用变通方法,例如在连接语句中指定套接字文件位置。

我试图了解如何在 php.ini 文件中正确使用 mysql.default_socket 指令。

更新:难道phpinfo()函数显示的MYSQL_SOCKET值不是取自php.ini文件,而是取自编译MySQL时设置的编译时选项?

所以这次我尝试使用以下选项编译 MySQL: -DMYSQL_UNIX_ADDR=/home/stephane/programs/mysql/install/tmp/mysql.sock

如:制作\

  -DCMAKE_INSTALL_PREFIX=/home/stephane/programs/mysql/install \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/home/stephane/programs/mysql/install/data \
-DMYSQL_UNIX_ADDR=/home/stephane/programs/mysql/install/tmp/mysql.sock

但同样重新编译PHP并重启Apache后,MYSQL_SOCKET值仍然不是自定义位置。

此外,这给我留下了一个问题,即为什么有两种不同的方式来表达自定义 MySQL 套接字位置以及 MYSQL_SOCKET 的用途。

最佳答案

需要申报mysql.default-socket适当的 php.ini 文件中。我觉得您更改的文件负责控制台运行的 php 配置。

查看 phpinfo() 的顶部部分,了解从何处加载 web 服务器的 php.ini 文件。应该在 Loaded Configuration File 行中。

更新:根据评论,假设您在正确的文件中设置了配置,您应该检查 php/webserver 是否具有对 /home/stephane/programs/mysql 的读/写访问权限/install/tmp/mysql.sock 位置。也许这是您的配置被默认值覆盖的原因。

关于php - 使用 MySQL 套接字文件的自定义位置设置 PHP - mysql.default_socket 与 MYSQL_SOCKET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29273495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com