2015-09-04 177 views
0

所以我有一個php.ini爲我們的虛擬專用網沒有任何擴展定義(即「擴展= p​​hp_curl.so」),但當我查看網頁上的phpinfo()時,我看到我們所有的模塊/擴展都已加載(即捲曲,mbstring,imagick等)。哪裏/如何可以加載這些擴展?我沒有看到在php.ini中的擴展指令,但擴展加載

編輯

而且在EashApache,在您的構建/配置文件的PHP擴展部分,它顯示所有可用的擴展(啓用/與否)。

我確定這裏有一些主要的php.ini,在vps上,或者服務器上的vps是所有默認的PHP配置默認加載的地方。

+0

也許這些擴展被編譯到php核心中。檢查phpinfo()輸出中的「配置命令」部分。如果一個條目看起來像'with-xyz = shared',那麼擴展就是作爲共享對象構建的。但是,如果在該選項中沒有「共享」,它將進入php核心,並且不需要進一步擴展= ...指令。 – VolkerK

+0

先生是正確的,至少我在該部分的一些擴展名。請添加爲答案,生病檢查它! – dave

回答

1

擴展可以編譯爲共享對象,您可以通過extension=...指令加載或通過dl()(但不應通過imho)加載。
擴展也可以編譯到php核心中。然後他們可以沒有進一步的「命令」。
phpinfo()爲您提供有關php內核在其Configure Command部分中的信息,例如,

--with-PDO-OCI = C:\ PHP-SDK \ ORACLE \ 86 \ instantclient_12_1 \ SDK, 共享
--with-mcrypt的

的PDO_OCI模塊是建立爲共享對象/ DLL而mcrypt模塊內置於php核心。

-1

目錄「extension_dir」(定義在php.ini中)中的擴展名會自動包含在內。

+0

在那個目錄中,我只能看到「imagick.so」 – dave

+0

它的一個linux系統,它取決於哪一個可能已經拆分了配置,並從/ var/lib /或/ usr/lib /加載了一些php擴展作爲通用系統庫。例如,ubuntu有一個主要的php.ini,但也包括php5.ini和php5-fpm.ini,它們包含在主php.ini中,並且基於每個實例覆蓋它的設置。但是可以通過在/etc/php5/conf.d和/ etc/php5/mods-available /和/etc/php5/apache2/conf.d和/etc/php5/apache2/php中添加額外的文件來進一步覆蓋它。 INI – Dave