Mac OS X Lion中的PHP.ini在哪里?以为它在/ usr / local / php5 / lib中


268

我想在Mac上直接运行一些PHP,未注释httpd.conf,激活Web共享,安装MySQL等。我似乎找不到我的PHP文件,最重要的是,PHP.ini。

在我的旧计算机上,它位于/ usr / local / php5 / lib中,但是/ usr / local中不存在php5目录。

我需要获取包裹还是在错误的地方找东西?

运行OS X 10.7.3,PHP 5.3.8,Apache / 2.2.21


9
查找位置的简单方法是运行phpinfo();。
ralfe 2012年

10
locate php.ini
Pekka '02

12
@ralfe应该补充一点,您需要从phpinfo()或php --ini(在终端窗口中运行)中查找“ Loaded Configuration File”设置。因为如果没有php.ini,则这两个命令都将配置文件路径报告为/etc(至少在我的OS X 10.8安装中)。如果未加载任何配置文件,则应尝试通过mac
Jason S

/ usr / local / php5是entropy.ch和liip.ch的php安装程序安装php的地方。它从未是Apple php安装的位置。
heiglandreas 2014年

8
这样做php -i | grep php.ini

Answers:


396

如果存在,则应在/ private / etc中找到它,否则:

sudo cp /private/etc/php.ini.default /private/etc/php.ini

好的,在/ private / etc中有一个php.ini.default,我正在检查。但是知道为什么我的usr / local中没有旧的php5文件夹吗?过去那里有一堆文件,其中包括推荐的php.ini。这是新版本还是PHP5或Lion或其他版本的更改?
奥伦(Orun)2012年

自10.5起,MacOS X中默认包括PHP5,该位置位于php.ini文件的上述位置。如果是手动安装的,则不应在升级到Lion的过程中将其删除。奇怪...
mac

2
如果不存在php.ini,我的Lion机器上的php.ini.default文件与所有默认设置都不匹配。值得注意的是,short_tags已关闭,error_reporting,log_errors和一些次要设置有所不同。您将要比较php -i创建php.ini之前和之后的输出。
spoulson

1
在我的Mac上,我在/private/etc/php.ini中有一个文件,但是php似乎忽略了我在其中所做的任何更改,发现它使用的是/usr/local/php5/lib/php.ini中的文件
Kit Ramos

2
这个答案为我指明了正确的方向。cp php.ini.default> php.ini和CLI加载的配置变为/etc/php.ini。检查php -i | grep php.ini之后
bpile,

406

要在您的机器上找到ini文件,请打开Terminal.app并运行以下命令:

php --ini

如果您需要Lion的模板,请尝试


2
我现在没有加载php.ini。基本上,我正在寻找带有“推荐” php.ini模板的目录。
奥伦(Orun)2012年

47

在终端做php -i | grep php.ini。应该给你一些线索;)


26

@Cronk和@Justin的回答使我在Mac OS X 10.9 Mavericks上很接近。实际上,在我的系统上,该/etc/php.ini文件完全丢失了,直到我phpinfo()在Web服务器上运行时,我才发现没有配置文件。从复制文件/etc/php.ini.default并添加完全合格的路径mcrypt.so库配置文件解决了这个问题:

cp /etc/php.ini.default /etc/php.ini

然后/etc/php.ini添加以下行(使用mcrypt.so文件的正确路径):

extension="/usr/local/Cellar/php54-mcrypt/5.4.29/mcrypt.so"

然后重新启动Apache2:

apachectl restart

天哪,你是我的英雄!感谢您使用mcrypt完整路径的想法!
Hese 2014年

25

如前所述, php --ini命令将告诉您PHP期望在哪里找到php.ini文件。

对于标准安装,可能正在寻找 /etc/php.ini

如果您使用过Macports,则PHP可能正在寻找/opt/local/etc/php5/php.ini


7
etc是指向private / etc的链接:/
etc-

21

phpinfo()从任何文件运行,它会告诉您它在哪里。这是屏幕截图。

在此处输入图片说明


3
这是最好的方法,因为您可能会在其他“默认”文件夹中找到php.ini的副本,但是这种方法将告诉您实际使用的副本,这样就可以避免在您抓挠头部时感到头疼和沮丧。进行更改,但是php似乎完全不知道上述更改。
Kit Ramos

您还可以通过在运行php -a位置运行Shell来打开php REPL phpinfo();
metakermit

14

我有不止一次的PHP实例在运行,因此其他答案对我不起作用。这样做:

创建一个PHP文件并在浏览器中打开其本地URL:

<?php phpinfo(); ?>

PHP.INI路径将在顶部附近列出。


3

这是一个比较旧的线程,但是我想补充一下。

如果您的系统具有多个PHP安装(像我的一样),则使用命令行工具获得的结果可能与Web服务器实际使用的结果有所不同。如果您对Web服务器使用的PHP感兴趣,请仅使用从使用'phpinfo()'函数的网页收集的信息。

例如,在我的系统上,两种不同方法报告的版本是:

命令行:5.3.26

网址:5.3.13

对于php.ini文件路径,情况也有所不同:

命令行:/private/etc/php.ini

网址:/long/path/to/the/file/php.ini

您可以使用以下命令找到所有可能的php.ini文件:

查找/ -name php.ini 2>&1 | grep -v“拒绝” | grep -v“目录”

('2>&1'和'grep'元素仅将命令的输出限制为有用的信息,即摆脱错误消息)

在我的系统上,我找到了3个INI文件。因为我对Web服务器正在使用的内容感兴趣,所以知道应该使用网页结果返回的路径。我对此处列出的php.ini文件进行了更改,重新启动了apache,然后重新运行了该网页;新的修改显示在此处。

要重新启动apache:

sudo apachectl -k重新启动

-J


1

我从“ Hello World!”开始,一旦在浏览器中显示该内容,我就会phpinfo();在其中放一个,您可以看到所有内容。告诉您哪些配置已加载,所有内容。

<?php
   echo 'Hello World!';

   phpinfo();

0

您运行php_info()并看到下面的行:)

Loaded Configuration File   /Applications/XAMPP/xamppfiles/etc/php.ini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.