2017-04-10 66 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()'顯示配置文件的位置,正如我所提到的。讓我知道你是否需要任何幫助。謝謝! –