PHP 在 Windows 中忽略它的 php.ini
Posted
技术标签:
【中文标题】PHP 在 Windows 中忽略它的 php.ini【英文标题】:PHP ignores its php.ini in Windows 【发布时间】:2015-11-24 17:08:01 【问题描述】:我在我的 Windows 主机系统上使用php
来表示composer
。在尝试将 parse/php-sdk
添加到项目失败后(因为 SDK 需要启用 PHP cURL 模块),我更新了 PHP 设置。但这并没有解决问题。然后我检查了php.ini
的设置是否正确:
C:\Users\me>php --info | grep "extension_dir"
extension_dir => ext => ext
C:\Users\me>php --info | grep "php.ini"
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => C:\Program Files\php-5.6.8-Win32-VC11-x64\php.ini
是的,他们是。没有C:\Windows\php.ini
,但没关系——C:\Program Files\php-5.6.8-Win32-VC11-x64\php.ini
是我更新并加载的文件。
然后我打印了模块列表 (php --modules
) 并注意到它与加载的 php.ini
中的扩展设置没有任何共同之处。我还尝试更改其他设置(例如 memory_limit
),但 PHP 似乎忽略了我的 php.ini
并从其他地方加载配置。
如何检测这个神奇的“某处”(意味着:PHP 实际从哪里加载其设置)以及如何让它从定义的文件中加载所需的设置?
【问题讨论】:
Composer install error - requires ext_curl when it's actualy enabled的可能重复 @uri2x 感谢您的评论。不,这个问题不会重复您链接到的问题。其实这不是作曲家,而是关于 Windows 上的 PHP。 有趣的是,我们正在使用与更新加载的配置文件相同的设置,这似乎有效。 【参考方案1】:问题是由以下事实引起的,即 php.ini 正在由未以提升权限运行的编辑器进行编辑。如果 PHP 文件夹位于“程序文件”中,您必须以管理员权限访问其中的文件。
我发现了一个令人难以置信的事实,即使编辑器正确显示了更改,即使关闭/打开,更改也没有保存到 php.ini 中!
这可以通过检查 php.ini 内容来简单地验证 - 从命令行运行 more "C:\Program Files\... ...\php.ini"
。
解决方案很明显 - 您必须以提升的权限运行编辑器,或者使用 php.ini 授予用户对文件夹的权限,然后对其进行编辑。
【讨论】:
以上是关于PHP 在 Windows 中忽略它的 php.ini的主要内容,如果未能解决你的问题,请参考以下文章
PHP:写入时复制和通过引用分配在 PHP5 和 PHP7 上执行不同