我的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
我不知道出了什么问题。
任何帮助将不胜感激
感谢
答案 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") ) {
现在两个都在工作。