为什么在以普通用户身份运行脚本时会看到PHP NOTICE和ERROR,而不是root用户?

时间:2010-04-21 16:06:48

标签: php

据我所知,用户之间的错误报告或消息重定向没有区别。它们都使用相同的PHP ini。

然而,当我以普通用户身份运行脚本时,我得到了大量的NOTICES,当以root身份运行时,我得不到。当以普通用户身份启动PHP交互模式时,我得到两个PHP警告:'memcache'和'xmlwriter'已经加载;当以root用户身份启动时,我没有收到任何警告。

我知道我应该修正警告,而不是“让警告消失;”这是在票上。问题是,为什么用户的待遇不同?为什么普通用户会收到通知和警告,但root不会,即使他们的错误报告是相同的?

2 个答案:

答案 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