[英]What is the default path for PHP extensions in php.ini?
我將重新開始Web開發,因此決定使用自制軟件從頭開始重新安裝Mac的開發環境(我正在按照https://getgrav.org/blog/macos-sierra-apache-multiple- php-versions ,這可能是我所讀過的關於該主題的最佳教程)。
除了使用PECL來安裝擴展程序(如APCU和Xdebug)外,其他一切都很好。 我認為我可以讓擴展程序以一種有點怪異的方式工作,但是我寧願正確地理解這里發生的事情。
我的php.ini文件位於/usr/local/etc/php/7.1/php.ini。 當PECL安裝擴展時,似乎在[PHP]行上方的php.ini頂部添加了一行,例如:
1 zend_extension="xdebug.so"
2 extension="apcu.so"
3 [PHP]
4
5 ;;;;;;;;;;;;;;;;;;;
6 ; About php.ini ;
7 ;;;;;;;;;;;;;;;;;;;
8 ; PHP's initialization file, generally called php.ini, is responsible for
9 ; configuring many of the aspects of PHP's behavior.
本教程建議轉到/usr/local/etc/php/7.1/conf.d/並為每個擴展名創建單獨的配置文件。 即,將刪除php.ini中的第1行和第2行,以及/usr/local/etc/php/7.1/conf.d/ext-apcu.ini和/usr/local/etc/php/7.1/conf.d將創建/ext-xdebug.ini,並在相關ext-xx.ini文件中包含每個擴展名的配置設置。
在php.ini中引用擴展的默認PECL方法或對每個擴展使用ext-xx.ini文件的建議方法似乎都無法成功加載擴展。 我可以通過指定擴展路徑(/usr/local/lib/php/pecl/somedatestamp/extension.so)來解決這個問題,但是我不想這樣做。 所以:
*.so
文件,它會在extension=extension.so
和zend_extension=extension.so
配置中加載php配置文件中提到的extension=extension.so
zend_extension=extension.so
。 要檢查服務器啟動期間加載的所有配置文件,請運行命令php --ini
,我的示例輸出為: $ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File: /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.1/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.1/conf.d/ext-phalcon.ini,
/usr/local/etc/php/7.1/conf.d/ext-xdebug.ini,
/usr/local/etc/php/7.1/conf.d/php-memory-limits.ini
在您看來,您的版本可能看起來很亂:您的配置文件位於/usr/local/etc/php/7.1/php.ini
版)中,但是您嘗試將其他配置文件放入/usr/local/etc/php/5.6/conf.d/
(版本5.6)。 嘗試將它們放在/usr/local/etc/php/7.1/conf.d
extension_dir = "/usr/local/lib/php/pecl/20160303"
該值對php版本7.1有效,時間戳記20160303為擴展指定PHP API版本。 您還可以使用以下命令檢查擴展目錄的PECL配置是否與php config中的值相同
pecl config-get ext_dir
完成這些步驟后,您可以檢查命令是否加載了擴展名
php -m
它列出了所有已加載的php模塊和擴展。 如果配置文件中提到某些擴展名,但無法加載,則會收到警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.