不得不承认,不愧是服务器血统,这权限管理真的严格的,搭建好的owncloud报告没法发邮件,经过一番bing之后,找到了答案。

参考:http://stackoverflow.com/questions/25517281/swiftmailer-connection-could-not-be-established-with-host-smtp-gmail-com-conne

解决办法如下:

  1.  检查httpd_can_sendmail 是否设置为on
    getsebool httpd_can_sendmail
    • 如果返回的输出是 httpd_can_sendmail –> off , 运行
      setsebool -P httpd_can_sendmail 1
    • 如果你看到 httpd_can_sendmail –> on 那么跳到下一步
  2.  检查 httpd_can_network_connect 是否为on
    getsebool httpd_can_network_connect
    • 如果返回的输出是 httpd_can_network_connect –> off ,运行
      setsebool -P httpd_can_network_connect 1
    • 如果你看到 httpd_can_network_connect –> on 那么就跳到下一步
  3. 在服务器地址直接填ip而不是域名。

第三步感觉是另外的问题,而不是SELinux的权限阻止了邮件发送。

嗯……这是一个只在linux下才会出现的问题,原因还是权限(尼玛折腾了我一个早上)……

表示在php中有一条修改数据库的语句,当在命令行下执行完全没问题,但是丢到浏览器里面执行的时候就出错。

最终查明的问题是:文件夹的权限问题

之前一直留意的是数据库本身的权限,但是修改成777之后还是报错,苦苦Google无果,最后,还是有个老外指出了问题所在(相比之下在外文搜索方面弱的一逼的百度简直就是渣渣),就是文件夹也需要web用户的写权限,因为sqlite会在执行的时候创建临时文件……

尼玛死……终于好了……这就解释了为何在命令行下执行没问题(因为目录的写权限),但是在浏览器里面执行出错(因为没有目录写权限),这么个让人蛋疼的问题。