据我所知,用户之间的错误报告或消息重定向没有区别。它们都使用相同的PHP ini。
然而,当我以普通用户身份运行脚本时,我得到了大量的NOTICES,当以root身份运行时,我得不到。当以普通用户身份启动PHP交互模式时,我得到两个PHP警告:'memcache'和'xmlwriter'已经加载;当以root用户身份启动时,我没有收到任何警告。
我知道我应该修正警告,而不是“让警告消失;”这是在票上。问题是,为什么用户的待遇不同?为什么普通用户会收到通知和警告,但root不会,即使他们的错误报告是相同的?
答案 0 :(得分:1)
由于$PATH
的差异,您执行的实际PHP二进制文件可能会有所不同。您可能在/usr/bin
中安装了一个PHP副本,该副本使用共享模块进行内存缓存,另一个安装在/usr/local/bin
中,使其静态链接。
两个可执行文件都可以引用/etc/php.ini
来配置它们。如果配置文件告诉PHP尝试加载共享模块,那么静态链接的副本将生成您正在获取的错误。
尝试命令which php
作为普通用户和root,它应该报告PHP可执行文件的位置。您还可以为每个用户说echo $PATH
以查看它正在搜索的目录。您可能需要添加/删除$PATH
中的目录,您可以在~/.profile
文件中执行该目录。
答案 1 :(得分:0)
环境有所不同。
如果您尝试这样调查怎么办:
$ php -i > mortal
$ su php -i > root
$ diff mortal root