我将重新进行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)来解决这个问题,但是我不想这样做。所以:
答案 0 :(得分:1)
*.so
文件,它会以extension=extension.so
和zend_extension=extension.so
配置加载php配置文件中提到的扩展名。要检查服务器启动期间加载的所有配置文件,请运行命令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
(版本7.1)中,但是您尝试将其他配置文件放入/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模块和扩展。如果配置文件中提到某些扩展名,但无法加载,则会收到警告。