我的设置:Ubuntu LAMP,应用程序内置w / zend框架
我的问题:我有一些我通过cron触发的PHP脚本 - 每日电子邮件报告,rrd数据捕获等。我通过像'php -f scriptname.php'这样的cronjob启动它们。
当我从命令行测试脚本时,以我自己的身份登录,一切正常。但是,当相同的脚本以root身份执行时(通过cron或sudo),它会因以下错误而失败。
警告:用户'root'@'localhost'的访问被拒绝
警告:mysql_real_escape_string
():无法建立指向服务器的链接...
我做了一些研究,我很确定我提前建立了与mysql的连接,虽然这个过程有点模糊,因为我正在使用zend框架 - Bootstrap类调用zend_db来调用注册表类数据库凭据。等等。
我发现了一个解决方法:'sudo -u myusername php -f scriptname.php'但我真的很想知道我在这里做错了什么..
TIA!
答案 0 :(得分:2)
Warning: Access denied for user 'root'@'localhost'
这是您使用错误的用户名和密码登录mysql服务器时获得的消息,或者是您从不允许的位置登录的消息。检查root是否可以从主机'localhost'登录,并且它对您的数据库和mysql数据库有足够的权限。
'sudo -u myusername php -f scriptname.php'
也许Zend正在使用你的sysem级用户ID,并希望用它登录mysql?你可以检查或覆盖zend用来连接mysql的凭据吗?
答案 1 :(得分:0)
感谢您的时间。通过反复试验,我确定错误与我的Zend Framework实现有关。我的bootstrap,db初始化,注册表..谁知道。
虽然我喜欢与ZF合作,但像这样的简单问题变成了巨大的时间吸血鬼。我正在寻找的是一个mysql_connect()的地方!我找到的东西会更新。
非常感谢..
答案 2 :(得分:0)
如果没有数据库连接,也会出现此错误。