当我通过网络IP访问本地主机时出现PHP致命错误

时间:2016-06-07 07:17:10

标签: php apache

我的OSX ElCapitan上安装了apache / mysql。我在httpd.config文件中启用了虚拟主机,因为我的systme上有很多项目,我想随时访问其中的任何项目。

我的httpd-vhost.config文件,我按如下方式配置了第一个站点:

<VirtualHost *:80>
DocumentRoot "Users/me/Sites/test"
servername test.local
serveralias 192.168.1.20
.....

</VirtualHost>

当然是/ etc / hosts中的记录,用于将test.local重定向到127.0.0.1

现在,当我将test.local放入safari时,一切正常。但是当我把192.168.1.20,我得到

PHP Fatal error:  Call to a member function prepare() on a non-object

我不知道出了什么问题。

任何帮助将不胜感激

感谢

3 个答案:

答案 0 :(得分:1)

可能有一些原因:

  • 文档根目录中的路径看起来很糟糕。尝试使用绝对路径,例如“/ home / users / me / Sites / test”

  • 如果在127.0.0.1上运行正常,但在192.168.1.20上没有,所以可以对来自不同IP的连接启用限制。

请记住网站和浏览器中的apache重新加载和缓存清除。在这两种情况下,总是可以通过vardump对prepare函数的参数进行调试。

答案 1 :(得分:1)

我认为这是一个mysql数据库权限问题。 user@localhost可以访问数据库,但不能访问user@192.168.1.20。尝试GRANT访问user@192.168.1.20

答案 2 :(得分:0)

感谢各位的帮助

问题在于连接数据库的凭据。在我的配置文件中,我有:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { // test envirnonmet
    define("DB_USER", "x");
    define("DB_PASS", "x");
    define("DB_NAME", "y");
} else { // production site
    define("DB_USER", "p");
    define("DB_PASS","w");
    define("DB_NAME", "xyz");
}

第一行我改为:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || strstr($_SERVER['REMOTE_ADDR'],"192.168") ) {

现在两个都在工作。