在Mac OS X上配置php.ini文件

14

我在Mac OS X上遇到了一个奇怪的问题,与PHP配置文件php.ini有关。我创建了一个phpinfo文件,在浏览器中调用它会显示PHP设置:

Configuration File (php.ini) Path: /etc

Loaded Configuration File: /private/etc/php.ini

但是,在编辑位于此位置的php.ini文件后(当然要重启Apache),更改不会反映在PHP设置以及phpinfo文件中。

例如:更改bcmath小数点位数、更改时区设置等。是否有另一个主要位置,Apache将从其中获取设置文件?


你能提一下你在系统中使用的软件包名称吗?是MAMP Pro还是XAMPP? - Balaji Kandasamy
你该如何安装PHP和Apache? - Magic
@jimca - 我没有使用任何包。我正在使用OSX上默认的PHP Apache。 - Sarthak Gupta
考虑一下 - 如果我暂时从 /etc 中删除 php.ini,然后重新启动 apache 并重新加载 phpinfo,则仍会显示 php 设置。这不意味着 apache 仍然能够从某个地方读取 ini/配置文件吗?那么这可能是哪里呢? - Sarthak Gupta
3个回答

7
我正在使用本地的Mac OS X Apache 2和josegonzales的Homebrew taps。引用我的系统管理员朋友的话,“答案应该在重启PHP-FPM而不是Apache上。Apache使用mod_fastcgi通过端口或套接字连接到运行PHP的PHP-FPM。” 您需要加载/卸载与您的PHP-FPM安装相关联的p-list文件。首先检查~/Library/LaunchAgents。没有吗?我的位于这里:/usr/local/Cellar/php53/5.3.26/homebrew-php.josegonzalez.php53.plist。像这样重新启动它:
launchctl unload -w /usr/local/Cellar/php53/5.3.26/homebrew-php.josegonzalez.php53.plist && launchctl load -w /usr/local/Cellar/php53/5.3.26/homebrew-php.josegonzalez.php53.plist;

我将以下内容添加到我的~/.bash_profile文件中,这样当我重新启动Apache时,我就可以重新启动PHP-FPM。调用以下命令的命令是"apachectlrestart"

function apachectlrestart () { sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist && sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist && launchctl unload -w /usr/local/Cellar/php53/5.3.26/homebrew-php.josegonzalez.php53.plist && launchctl load -w /usr/local/Cellar/php53/5.3.26/homebrew-php.josegonzalez.php53.plist;}

这是一篇旧文章,但我曾遇到过同样的问题并在互联网上搜寻了很久也没有找到答案,所以我在这里回答以供日后参考。


后代会非常感谢你,@glassdimly!这对我很有用。 - a20
另外,@glassdimly 的网站看起来非常棒,非常漂亮。 - a20
在所有的解决方案中,这个对我起作用了。感谢你指出来。 - Sudhir

1

Jeremy John's answer 帮助我解决了这个问题。

问题:

  • 'Loaded configuration file'phpinfo() 输出中显示为 '/usr/local/etc/php/7.0/php.ini',但我的模块(imagick)未被 PHP 加载。

  • 我尝试手动在主 php.ini 文件中包含我的模块并重新启动 Apache,但是 'Loaded configuration file' 没有更新。

  • 我尝试杀死所有 Apache 实例并重新启动 Apache - 仍然相同。

  • 我尝试将我的 php.ini 重命名为 php.ini_ 并重新启动 Apache,但是 'Loaded configuration file' 仍然显示旧的 php.ini 文件。

解决方案:

  • After reading Glassdimly's answer above, I tried these steps:

  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist

  • launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist

  • And boom - it worked!

  • Next I set up shortcut function inside my ~/.bash_profile:

     # restart php-fpm
     function restart_fpm(){
    
         plist=~/Library/LaunchAgents/homebrew.mxcl.php70.plist
    
         launchctl unload -w $plist
         launchctl load -w $plist
    
         echo "PHP 7 fpm restarted"
     }
    
  • source ~/.bash_profile loads the new function into the current shell


0

从服务面板重新启动您的Apache HTTP服务器将反映您所做的新更改...


我认为你错过了括号里的部分。每次编辑php.ini文件后,我已经在“互联网和无线电”->“Web共享”->“关闭和打开”之后重新启动服务器。另一个要点是,如果我暂时将php.ini文件移出/etc文件夹,则调用phpinfo文件时仍会显示php设置,但此时加载的配置文件已更改。 - Sarthak Gupta
我认为如果我没有错的话,那么您的浏览器正在缓存该页面。尝试清除缓存并重新加载该页面..... - Narayan Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接