我目前正在尝试为用户创建一个系统,以便他们登录/注册我正在开发的 iPhone 应用程序的帐户。我已在本地服务器上运行该系统,但我尝试将其移至真实服务器,但未成功。
我正在运行 EC2 实例,并确保端口 22、80 和 3306 保持打开状态(源均为 0.0.0.0/0)。我已经安装了 Apache、MySQL 和 PHP/phpMyAdmin。我正在使用 AFNetworking 框架来处理所有连接。
我正在做的是:
API.m // this is where I make a connection with the EC2 instance and below are the settings for the connection
#define kAPIHost @"http://23.23.245.23:3306"
#define kAPIPath @"photoapp/"
我成功连接到我的实例,这很棒。如果您愿意,我可以发布代码,但目前我不会发布,因为我觉得没有必要。我在上面定义的 photoapp 文件夹中粘贴的 php 文件尝试使用以下命令连接到 mysql db:
$link = mysqli_connect("23.23.245.23:3306","root","password");
mysqli_select_db($link, "photoappdb");
当我尝试注册用户时,我进入 phpMyAdmin 检查时,用户名和密码没有显示在数据库中。同样,当我运行 MAMP 并将所有内容更改为 localhost 时,这一切都有效,所以对我来说,这似乎与我尝试连接实例的方式或实例本身有关。
编辑3
我删除了最初问题的部分内容,因为我越来越接近这个问题的根源。我相信我知道发生了什么,但我不知道如何解决它
如果我使用 设置初始 API 连接kAPIHhost @"http://23.23.245.23:3306"
,则可以成功连接,但 php 文件不会运行。如果我在没有 3306 端口的情况下设置初始 API 连接,则kAPIHhost @"http://23.23.245.23"
连接会失败,但php 文件运行后我收到很多 mysql 连接错误。
我尝试通过浏览器直接连接到 php 文件,如下所示:http://23.23.145.23/photoapp/index.php
并且我在日志文件中获得了 php 输出,但是如果我使用http://23.23.145.23:3306/photoapp/index.php
MySQL 端口,我的浏览器将尝试下载 php 文件...
因此,php 文件的处理似乎有些尴尬。我相信当我尝试连接到正确的 IP 时kAPIHhost @"http://23.23.245.23:3306"
,我会成功,但服务器会尝试将 php 文件下载到 iPhone,而不是运行它们。有人能解释一下这种行为吗?谢谢!
答案1
您提供的端口似乎不正确(作为主机名的一部分)。
mysqli_connect PHP 函数
对于 PHP 函数 mysqli_connect,参数如下所示:
mysqli_connect(host,username,password,dbname,port,socket);
注意第 5 个参数是端口(通常默认为 3306)。
你的代码
它看起来应该是这样的:
$link = mysqli_connect("23.23.245.23","root","password");
mysqli_select_db($link, "photoappdb");
或者
$link = mysqli_connect("23.23.245.23","root","password", "photoappdb","3306");