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 上执行不同

XDebugPHPStorm+XDebug+Firefox

PHP代码和HTML代码的嵌套问题

HTACCESS 重写:忽略语言代码并将 index.php 添加到 url 而不更改它

理解:从 PHP 数组到 Python?

PHP中递归的实现(附例子)