ChatGPT解决这个技术问题 Extra ChatGPT

Mac OS X Lion 中的 PHP.ini 在哪里?

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

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

我需要取包裹还是找错地方了?

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

locate php.ini
@ralfe 应该补充一点,您需要从 phpinfo() 或 php --ini (在终端窗口中运行)中查找“加载的配置文件”设置。因为如果没有 php.ini 两者都会将配置文件路径报告为 /etc(至少在我的 OS X 10.8 安装上)。如果没有加载配置文件,那么您应该尝试 answer by mac
/usr/local/php5 是 entropy.ch 和 liip.ch 的 php-installer 安装(ed)php 的位置。它从来都不是苹果 php 安装的位置。
这样做php -i | grep php.ini
在终端输入 php -r "phpinfo();"

v
vqdave

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

php --ini

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


我现在没有加载 php.ini。基本上我正在寻找带有“推荐” php.ini 模板的目录。
m
mac

如果它存在,您应该在 /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 或其他东西的变化吗?
PHP5 自 10.5 起默认包含在 MacOS X 中,php.ini 文件位于上述位置。如果您手动安装了它,则不应在升级到 Lion 期间将其删除;奇怪的...
当没有 php.ini 时,我的 Lion 机器上的 php.ini.default 文件与所有默认设置都不匹配。值得注意的是 short_tags 为 Off,error_reporting、log_errors 和一些次要设置有所不同。您需要在创建 php.ini 之前和之后比较 php -i 的输出。
在我的 Mac 上,我在 /private/etc/php.ini 有一个文件,但 php 似乎忽略了我在那里所做的任何更改,发现它使用的是 /usr/local/php5/lib/php.ini 中的那个
这个答案为我指明了正确的方向。 cp php.ini.default > php.ini 和 CLI 加载的配置变为 /etc/php.ini。检查 php -i | grep php.ini 之后
S
SpoBo

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


P
Peter Gluck

@Cronk 和 @Justin 的回答让我接近 Mac OS X 10.9 Mavericks。事实上,在我的系统上,/etc/php.ini 文件完全丢失了,直到我在 Web 服务器上运行 phpinfo(),我才发现没有配置文件。从 /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 的完整路径的想法!
J
Joat

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

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

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


etc 是指向 private/etc 的链接:/etc -> private/etc
R
Robert Rocha

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

https://i.stack.imgur.com/S9wWn.jpg


这是最好的方法,因为您可能会在其他“默认”文件夹中找到 php.ini 的副本,但这种方式会告诉您它实际使用的文件夹,这样您就可以避免头疼和沮丧时出现做出改变,但 php 似乎完全不知道所说的改变。
您还可以通过运行 php -a 在您的 shell 中打开 php REPL,然后在其中运行 phpinfo();
J
Justin

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

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

<?php phpinfo(); ?>

PHP.INI 路径将列在靠近顶部的位置。


I
Islam Alshnawey

1- 查找 .ini 位置路径

打开终端并运行命令

php --ini

2-复制此路径 /usr/local/etc/php/7.4/php.ini 并通过命令打开它

nano /usr/local/etc/php/7.4/php.ini

3- 使用键盘组合 Ctrl+X 进行更改并退出以退出 nano

4- 完成后运行 apachectl restart


C
Community

这是相当老的线程,但我想进一步澄清。

如果您有一个安装了多个 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 重启

-- Ĵ


F
Freementalist

在 OSX/MacOS 上,在终端窗口中执行以下操作:

在提示符处输入 php --ini 并按回车键

报告类似:配置文件 (php.ini) 路径:/etc 加载的配置文件:(无)扫描其他 .ini 文件:/Library/Server/Web/Config/php 解析的其他 .ini 文件:(无)

...这是因为在 /etc 中有一个名为 /etc/php.ini.default 的文件作为示例,并表明它没有被使用。您需要将该文件复制到 php 期望的名称,以便您可以编辑它,如下所示:

类型:

$  sudo cp /etc/php.ini.default /etc/php.ini       (and enter your password)

...然后您将看到如果您再次运行 php --ini,它现在可以看到您的新文件:

在提示符处输入:php --ini 应报告:

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed:      (none)

...现在编辑 /etc/php.ini - 您要确保以下行(不是以分号 ';' 开头的同一行)完全如下:log_errors = On(这将打开日志引擎上)

然后,在本节中:

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

如果您想记录到系统日志(或 Windows 上的 Windows 事件日志),则 ;error_log = syslog 应变为 error_log = syslog

但是,如果如您所说,您想登录到文件,请通过删除前导分号以使 ;error_log = php_errors.log 变为 error_log = php_errors.log 或使用完整路径将其放置在您想要的位置来取消注释。

祝你好运


C
CenterOrbit

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

<?php
   echo 'Hello World!';

   phpinfo();

Q
Quy Le

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

Loaded Configuration File   /Applications/XAMPP/xamppfiles/etc/php.ini

I
Imran Zahoor

这是在mac中修改正确php.ini的完整方法。

通过 php --ini 找出 ini 的位置,这将给出如下内容:

    Configuration File (php.ini) Path: /usr/local/etc/php/7.4
    Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
    Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
    Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini

现在通过 sudo vi /usr/local/etc/php/7.4/php.ini 打开 php.ini

进行更改并通过 :wq 退出

运行最终命令 sudo apachectl restart

如果正确完成,您现在应该反映您的更改:)