2017-04-10 63 views
0

我在一个具有多个域的服务器上。我想知道哪个php.ini被加载到每个域中。
我手边有几种不同的工具。也许他们让我更接近我想要的东西。从命令行查找加载的php.ini

  1. 简单的php -i|grep 'Loaded Configuration File'返回系统php.ini
  2. find /home/ -xdev -name php.ini 2>/dev/null返回属于所有托管域名的所有php.ini
  3. virtualmin list-php-directories --domain this.is.a.domain --multiline返回已激活特定版本的PHP的所有目录。

一些样本输出:
1.返回:

Loaded Configuration File => /etc/php/7.0/cli/php.ini 

这显然是它获取主机OS加载php.ini
2.返回:

... 
/home/domain.x.com/etc/php5/php.ini 
/home/domain.x.com/etc/php7.0/php.ini 
/home/domain.x.com/etc/php.ini 
/home/domain.y.com/etc/php7.0/php.ini 
/home/domain.y.com/etc/php.ini 
... 

这是在这些领域都php.ini的完整列表。
3.返回:

/home/domain.x.com/public_html 
    PHP version: 7.0 
    Full version: 7.0.8 
    Execution mode: fcgid 
    Web root directory: Yes 

中始终有一个/home/domain.foo.com/etc/php.ini。这是一个hets加载?或者我必须检查virtualmin PHP的哪个版本被加载到相应的subdir中?有没有完全不同的方式?

注意:我只有手头的命令行,只有一个用户用于监视目的。此外,该过程应该是非侵入性的。所以我不认为我可以在这些域中放置一些php文件来通过浏览器获得我的答案。信息可能存储在我可以解析的某个文件中?

+0

'php --ini'?它会向您显示所有PHP.ini路径的详细信息,指定加载的路径。不知道这将如何适用于多个域,但值得一试。 –

+0

看起来你回答了你自己的问题!上面的命令2的输出是什么?这不是你在找什么? –

+0

另外检查你是否有一个真正的文件或只是一个符号链接到另一个真实的文件! – JustOnUnderMillions

回答

1

仅在命令行中,你将需要:

  1. 安装一个命令行Web浏览器或您可以使用wget打脚本并保存在一个文件的响应。
  2. 在所有的领域与<?php phpinfo();一个php文件
  3. 确保所有的领域都能够在Web服务器上要加载或Web服务器访问Internet直接从网页加载的域。最好的做法是将所有域映射到hosts文件中的localhost。
  4. 从命令行浏览器中的每个域打开phpinfo脚本并检查加载的配置文件,或者如果您选择使用wget,只需将输出保存到文件并检查文件的内容,即可获取加载的配置文件。
+0

这看起来不错。当我在那里获得写权限时,我会用wget来试试这个。谢谢一堆。 – sebastian

+0

所以你没有看到做这种'只读'的方法?信息没有存储在我可以解析的某个文件中?鉴于某些域名属于客户,将某些文件放入其域名并不是那么好。 – sebastian

+0

我相信如果每个域加载自定义php.ini文件,php配置路径应该存储在域的虚拟主机文件中。你可以检查服务器配置文件吗? 从你上面的问题来看,如果你不想把文件放在你的客户的域名中,你提到的第三条命令应该做的伎俩,但你会再次猜测,唯一的解决方法是真正有一个php页面执行并通过'php-info()'显示配置文件的位置,正如我所提到的。让我知道你是否需要任何帮助。谢谢! –