【发布时间】:2016-01-08 05:53:51
【问题描述】:
在我的 PHP 应用程序中,用户可以选择上传文件,该文件将存储在我的 MySQL 数据库的表中。
在我的 Windows 实例上的 XAMPP 上,这可以正常工作。但是,在 AWS EC2 Ubuntu 上,当表单与选定的文件一起提交时,Web 浏览器会出现 "Server Error 500 The website 在检索时遇到错误。它可能因维护而关闭或配置不正确。”
我最初检查了 my.cnf 文件的 max_allowed_packet 大小,但这似乎很好,因为它默认设置为 16MB,但我感觉这与 Apache 服务器本身不喜欢上传 BLOB 有关.
这是处理向表中插入 BLOB 的 PHP 代码:
//execute stored proc. to upload attachment
$null = null;
$query = $this->connection->prepare("CALL sp_PopulateAbstractAttachments(?,?,?,?,?)");
$query->bind_param("ibssi", $abstractID, $null, $name, $type, $size) or die(mysqli_error($this->connection));
foreach (str_split($attachment, 10240) as $chunk)
{
$query->send_long_data(1, $chunk);
}
$query->execute() or die(mysqli_error($this->connection));
$query->close();
就像我说的,这在 XAMPP Windows 上运行良好,但在 AWS EC2 Ubuntu 上却不行。什么可能导致此问题?
编辑
根据 Apache 的错误日志,这是问题所在:
[2016 年 1 月 7 日星期四 19:24:24.571319] [:error] [pid 12049] [client XXX.XXX.XXX.XXX:XXXXX] PHP 致命错误:在 /var/www/html/app/models/Abstracts.php 中的非对象上调用成员函数 bind_param() 在第 40 行,引用: http://XXXXXXXXXXX/public/index.php?url=home/submitAbstract/
可能是什么问题?
【问题讨论】:
-
您可能需要增加 php 脚本本身的 max_execution_time。 php.net/manual/en/function.set-time-limit.php供参考。
-
错误 500 并没有告诉我们太多信息。我建议在 Ubuntu 的服务器(apache2?)中获取有关您的错误的更多信息
-
@RodolfoAndrade 你知道我如何通过 SSH 客户端来做到这一点,因为这是我与服务器进行交互的唯一形式,而且我不了解 Linux,很遗憾?是的,它是 apache2。
-
@DerekPollard 我会调查一下。
-
@RodolfoAndrade 我发现了错误,请查看帖子编辑。
标签: php mysql amazon-web-services amazon-ec2 ubuntu-14.04