簡體   English   中英

php.ini中PHP擴展的默認路徑是什么?

[英]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)來解決這個問題,但是我不想這樣做。 所以:

  1. (我很確定這的答案是“是”,但可以肯定的是):服務器是否只掃描conf.d文件夾並嘗試加載任何extension.so,所以每個ext-extension中都有描述。這樣找到文件?
  2. 如何為PHP配置設置等效於$ PATH? phpinfo()引用了extension_dir變量,並給出了/usr/local/Cellar/php@7.1/7.1.20/lib/php/20160303的值,並且在php.ini中設置了extension_dir變量,但已將其注釋掉。 那么PHP在哪里獲得通過phpinfo()顯示的值,並且可以在PHP尋找擴展的目錄中指定多個目錄呢?
  1. 服務器不會自動掃描*.so文件,它會在extension=extension.sozend_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

  1. 您應該在php.ini中指定擴展目錄路徑,我有這個值
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM