使用ssl与远程mysql的PHP连接通过命令工作,但不能在浏览器中工作

时间:2017-07-05 15:46:51

标签: php mysql amazon-web-services ssl browser

我想使用 PHP 中的 ssl 连接到远程(AWS) mysql 服务器。

当我通过命令行执行它时,我的脚本有效,但是当我从浏览器调用它时,它不会。

$con=mysqli_init();
mysqli_ssl_set($con,NULL,NULL,"path/to/cacert.pem",NULL,NULL);
$link = mysqli_real_connect($con, "host", "username", "password");

我正在使用 php7 / Apache / CentOs 。我尝试更改 CA文件所有权权限,并注意到它需要在控制台上执行的读取权限。但是在浏览器中,即使我向每个人(chmod 777)提供完全许可,它仍然无效。

我得到的错误是: 警告:加载cafile流失败。 当我检查文件的存在时它返回true,但是当我检查is_readible时,那么也是错误。

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:1)

因此我认为可读性和权限存在问题。我可以将问题缩小到存在但不可读的证书文件。我通过ftp将文件移到了我的服务器上。

我可以通过创建一个新的.pem文件并简单地将原始文件的内容复制到其中来解决我的问题。这个是现在可读的并且可以在浏览器中使用,但是我无法弄清楚为什么它们都具有相同的 chmod xxx 权限和 chown 所有权。

详细说明(针对使用 AWS MYSQL 的类似问题的用户)

  1. 在文本编辑器中打开 rds-combined-ca-bundle.pem 文件(下载链接:https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem)。

  2. 复制内容。

  3. 在您的服务器上运行php脚本创建新文件并将文本粘贴到其中。(可能需要一些额外的编辑,开始/结束标记在单独的行中,新行与原始行结束在同一位置文本)