WAMP下不同的php.ini配置文件加载问题

# 前言

在开发过程中,有时在修改了php.ini配置文件,但却发现修改没有生效,因此专门去踩一下里面的坑。

# 相关信息

  • wamp version 3.0.6 64bit
  • 我的wamp安装路径 H:\WebDevelopmentEnvironment\wamp64\
  • Windows 10

# php.ini配置文件存储路径

如果你在wamp的安装目录下仔细查找过php的配置文件php.ini的话,你可以在PHP的安装目录与Apache的bin目录下找到它。

  • Apache的bin目录下

  • PHP的安装目录下

# 不同模式下php.ini文件的加载

接下我们用两个方式去查看一下php的php.ini配置文件加载情况,一种方式是通过Apache-Web访问,另外一种则是ssh-cli访问,也就是命令行模式下。
- 在你的服务器下创建一个PHP文件,通过phpinfo()函数来查看相关信息,在浏览器访问该文件即可。

  • 另外一种访问则在命令行中使用php –ini命令,则可查看到相关信息


为什么会出现这种情况?
首先需要知道php文件有两种运行方式:

  • CLI,即在命令行中运行,php文件直接由php的解析器解析运行,不经过web服务器(Apache等)

  • web服务器,当通过浏览器请求web服务器中某个php文件时,web服务器(如Apache)会将PHP作为一个模块加载进来,再交由php的解析器去解析运行所请求的php文件。


到这里,你应该明白为什么会出现不同访问模式下加载的php.ini配置文件不同了吧。
- 在wamp中,通过web访问PHP文件的时,wamp设定了所加载的PHP配置文件是Apache bin目录下的php.ini

  • 在命令行中访问PHP文件时,不用经过web服务器,直接加载配置文件是PHP安装目录下的

  • 在PHP安装目录下还有个phpForApache.ini配置文件,这个配置文件其实等同于Apache bin目录下那个配置文件,只有在通过web访问时才被加载。

# 验证

我们可以通过一个例子来验证一下,例如pdo使用配置文件形式连接数据库

## 预先将pdo连接数据库的dsn信息配置在php.ini配置文件中
## 当使用pdo连接数据库的时候直接读取配置

## php.ini配置文件
## 配置格式 pdo.dsn.dsnName="dsnValue"  (pdo的dsn值格式请自行了解
pdo.dsn.PdoDsn="mysql:host=localhost;dbname=user"

try {
    // 读取方式: 通过dsnName来获取dsnValue
    $dsn = 'PdoDsn';
    $userName = "root";
    $password = "";
    $pdoConn = new PDO($dsn,$userName,$password);
    var_dump($pdoConn);
}catch(PDOException $e) {
   echo $e->getMessage();
}
  • 当设置在PHP目录下的php.ini文件

  • 当设置在PHP目录下的phpForApache.ini或者Apache bin目录下的php.ini文件


    验证成功!

文章来源: WAMP下不同的php.ini配置文件加载问题

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:WAMP下不同的php.ini配置文件加载问题