Dude, where's my php.ini? (server config)
几年前,我在我维护的Linux服务器上安装了Apache2.2x和php 5.3.1。我使用了.tar.gz并按照指示构建了它们(而不是rpms和您拥有的东西)。一切都很好。
今天我需要安装这个,它看起来像一个PHP库。我完成了安装的所有步骤,在$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so中发现了ibm db2.so。
最重要的是最后一步是配置php.ini,但我的系统中没有php.ini。恐怖的恐怖。PHP工作得很好,当然,除了我想使用的这个新尖牙的IBM Thingamagic之外,其他人可以使用GUI来修补DB2。(我尝试了一个小的PHP脚本,该脚本失败,表明IBM_DB2函数不可用)。
我必须每隔几年处理一次PHP,所以请从一个非常基本的层面告诉我,我可以做些什么来实现对DB2的基于Web的GUI访问。
- 90%的时间是/etc/php5/apache2/php.ini
- @皮埃尔·莱斯皮奈,谢谢你。有人在我第一次发布"哥们儿"后不久就删掉了,但我很高兴我恢复了它。它很好地捕捉到了一个人第一次试图找到它时的感觉,但却不能:)
- @皮埃尔·莱斯皮奈,?标题是什么?
- @pacerier en.wikipedia.org/wiki/dude,u其中%27su我的车%3f
- 另请参阅stackoverflow.com/q/2750580/632951
- 因为这个问题的前提是错误的,所以投反对票。"我的系统上没有php.ini"不,你只是找不到它。说到这一点,locate php.ini只需片刻就能告诉您文件在您的系统中的位置。
- @亚当:除非不是PHP5;)
- @行,是的,我的评论不再有太大的相关性,虽然没有意识到上票的数量!
- 我只是想说,当我看到这个(2018年3月4日晚上9点),评论"90%的时间它的/etc/php5/apache2/php.ini"有90个有用的投票。我91岁。
- @phpn00b希望你自己的评论能积累更多有用的选票!;-)
- @巫师别忘了加上你的赞成票,现在还是91票!!!!
- @phpn00b我更赞成你最后的评论,lol;-)
- 我只想说,我已经多次回到这个问题上来了。再次感谢!
在命令行上执行:
你会得到如下信息:
1 2 3 4 5 6 7 8 9 10
| Configuration File (php .ini ) Path : /etc /php5 /cli
Loaded Configuration File: /etc /php5 /cli /php .ini
Scan for additional .ini files in : /etc /php5 /cli /conf .d
Additional .ini files parsed : /etc /php5 /cli /conf .d /curl .ini ,
/etc /php5 /cli /conf .d /pdo .ini ,
/etc /php5 /cli /conf .d /pdo_sqlite .ini ,
/etc /php5 /cli /conf .d /sqlite .ini ,
/etc /php5 /cli /conf .d /sqlite3 .ini ,
/etc /php5 /cli /conf .d /xdebug .ini ,
/etc /php5 /cli /conf .d /xsl .ini |
号
那是我的本地设备。然而,第二行是有趣的一行。如果没有提到,请看第一个。这就是PHP查找php.ini的路径。
您可以在脚本中使用phpinfo()grep相同的信息,并使用浏览器调用它。它在输出的第一个块中提到。php -i对命令行也做了同样的操作,但是它非常不舒服。
- 接受最古老和最简单的答案(所以在接受之前我必须等一段时间)。感谢您的扩展,这可能会帮助下一个人寻找信息。对于我来说,第二行说(无),在第一行的路径中放置了一个php.ini文件之后,一切都正常。谢谢!
- 我使用这个命令编辑了php.ini文件,它也指导了我,我的php设置没有改变,我意识到它没有给我正确的php.ini文件。我尝试使用phpinfo()php函数,它给出了我需要编辑的php.ini的实际正确位置。我认为这很重要,我希望这能帮助别人。
- /etc/php5/apache2/php.ini文件
- @感谢您指出您在实践中遇到的问题。我把公认的答案改为强调创建.php文件的答案。顺便说一下,如果你对这个问题发表意见,我会得到通知,我可以尽快解决这个问题。
- @Kingcrunch,当你有多个PHP安装时,你确定这会起作用吗?
- @起搏器是的。只要确保执行正确的可执行文件:/path/to/one/php --ini和/path/to/another/php --ini。
- @Kingcrunch,那么上面的公众评论呢?
- @Pacerier这与不同的PHP安装无关,但是不同的SAPI可以使用不同的ini文件。我不使用Apache模块,但据我所知,我认为没有办法绕过类似于phpinfo.php的文件。有了fpm,您至少可以使用php5-fpm -i | grep '\.ini'。通常情况下,您会使用这两到三次,并在一天结束时知道文件在哪里;)
- 另外,在一些灯堆上,这只会返回php cli php ini。
找到这个的最佳方法是:创建一个PHP文件并添加以下代码:
。
然后在浏览器中打开它,它将显示实际正在读取的文件!
按操作更新:
以前接受的答案对你来说可能更快更方便,但并不总是正确的。请参阅对该答案的评论。
请注意本答案中提到的更方便的替代方案。
- 这应该是公认的答案。如果安装了CLI并运行了Apache,那么它可能有自己的ini文件(就像我的系统一样)。使用接受的答案返回cli使用的是什么而不是apache。
- @丹是的,你是对的。我将接受的答案改为这一个,因为您提到的问题在实践中也遇到过一些人(他们对先前接受的答案发表了评论)。(顺便说一下,如果你对这个问题发表意见,我会尽快解决这个问题的。)
- 这对我的安装不起作用。Typo?应该是。
- 另请参见php.net/manual/en/configuration.file.php
- php -r \@phpinfo\(\)\;为我工作php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1提取具体信息
- php_ini_loaded_file()不适用于我。
- @Zylstra-Try:。
这对我很有用:
。
您应该看到如下内容:
1
| Loaded Configuration File => /usr /local /lib /php .ini |
。
附笔只获取php.ini路径
1
| php -i | grep /.+/php.ini -oE |
- 这只有在有一个php.ini的情况下才有效,这正是问题所在:如果没有,你仍然不知道到哪里去看,或者到哪里去放一个新的。
- 我从来没有遇到过没有php.ini文件的情况。
- 运行这个命令给了我Configuration File (php.ini) Path => /usr/lib,而运行给了我Loaded Configuration File: /etc/php.ini。所以,在我的情况下,江户十一〔九〕更可靠。
- 这并不完全正确。每个使用PHP语言的框架都有自己的php.ini文件。如果从命令行调用该行,则可能最终会收到类似/var/php5/cli/php.ini的内容,这不是在Web环境中运行php时使用的文件。对于该文件,您应该查看Apache2文件夹。
在命令窗口类型中
它会告诉你路径
1 2
| Configuration File (php .ini ) Path : /usr /local /lib
Loaded Configuration File: /usr /local /lib /php .ini |
号
如果上述命令不起作用,则使用此命令
号
这个命令应该可以帮助您找到它
1
| php -r"phpinfo();" | grep php.ini |
号
- 我比其他答案更喜欢这个。它不要求我创建、定位包含这些内容的PHP文件并在浏览器中加载页面。
使用以下命令在Linux中查找php.ini文件路径。
1 2 3 4 5
| [root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production |
号
或者换个方法试试
埃多克斯1〔5〕它显示路径结果
- 这比php -i | grep 'php.ini'等方法差,因为它可以找到任何php.ini,并且不会告诉您您的php安装使用的是哪个。此外,当locateDB不是最新版本时,它可能会给出错误的结果。
将告诉您它的位置,或从命令行
。
PHP附带两个本机函数,用于显示加载的配置文件:
- php_ini_loaded_文件返回加载的ini文件
- php_ini_scanned_files返回从附加ini目录解析的.ini文件列表
根据您的设置,Apache和CLI可能使用不同的ini文件。以下是两种解决方案:
阿帕奇:
只需在PHP文件中添加以下内容,然后在浏览器中打开它
CLI:
复制粘贴到终端:
1
| php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());' |
。
- php-ini-loaded-u文件对我不起作用。
- 不被欣赏、彻底和(几乎)正确的回答。我几乎把这个换成了正确的答案,但我担心江户十一号〔14〕可能并不总是可用的。
- @zylstra你的PHP版本是什么?php_ini_loaded_file的文档说php版本>=5.2.4
- @巫师现在不确定。忘了我在检查哪个系统。:
号
嘿。。。对我有用!
- 首先,这需要一段时间;其次,如果你有不止一个,你怎么知道哪个是实际使用中的那个?
- 的确,php --ini是可行的,但这只是另一种选择:)通常有一个/etc/php5/cli/php.ini/etc/php5/apache2/php.ini/etc/php5/cgi/php.ini,通常你想要哪一个相当明显。(cli、apache、cgi)
- 这不是一个好的解决方案,因为我们不打算在磁盘上找到所有php.ini文件。
您可以使用如下方法获取有关配置文件的更多信息:
1 2 3 4
| $ -> php -i | ack config # Use fgrep -i if you don't have ack
Configure Command => './configure' ...
Loaded Configuration File => /path /to /php .ini |
对于sapi:php fpm
不需要创建php.info文件(不管怎样,把它留给世界阅读并不是一个好的策略)。在命令行上:
号
在它的输出中的某个地方,它将显示这一行:
1
| Configuration File (php .ini ) Path => /etc |
号
下面是更完整的解释:https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/
尝试此解决方案之一
在您的find / -name"php.ini"型终端中
在您的终端类型php -i | grep php.ini中。它应该显示文件路径为Configuration File (php.ini) Path => /etc
如果您可以访问一个PHP文件,请在编辑器(记事本)中打开它。并在后面的新行phpinfo();中插入下面的代码。会告诉你php.ini的位置
您也可以在交互模式下与PHP交谈。只需输入php -a。php启动后的终端和phpinfo();类型。
对于定位php.ini文件,已经提到了几种有效的方法,但是如果您遇到此页面是因为希望在bash脚本中对其进行一些操作:
埃多克斯1〔6〕
- 相反,请参阅:stackoverflow.com/a/24342463/621338,而不是将其变大,如果文本发生变化,这是很脆弱的,您可以让php只打印文件名并在bash脚本中使用它,而不需要像上面这样复杂的东西。