Php MySQL-插入BLOB时出现服务器故障
在我的PHP应用程序中,用户可以选择上载一个文件,该文件将存储在我的MySQL数据库的一个表中 在我的XAMPP On Windows实例上,这可以正常工作。但是,在AWS EC2 Ubuntu上,当表单与所选文件一起提交时,web浏览器会出现“服务器错误500网站在检索时遇到错误。它可能因维护而关闭或配置不正确。” 我最初检查了Php MySQL-插入BLOB时出现服务器故障,php,mysql,amazon-web-services,amazon-ec2,ubuntu-14.04,Php,Mysql,Amazon Web Services,Amazon Ec2,Ubuntu 14.04,在我的PHP应用程序中,用户可以选择上载一个文件,该文件将存储在我的MySQL数据库的一个表中 在我的XAMPP On Windows实例上,这可以正常工作。但是,在AWS EC2 Ubuntu上,当表单与所选文件一起提交时,web浏览器会出现“服务器错误500网站在检索时遇到错误。它可能因维护而关闭或配置不正确。” 我最初检查了my.cnf文件中的max_allowed_数据包的大小,但这似乎很好,因为默认设置为16MB,但是我感觉这是因为Apache服务器本身不喜欢上传blob 以下是处理向
my.cnf
文件中的max_allowed_数据包的大小,但这似乎很好,因为默认设置为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的错误日志,这就是问题所在:
[Thu Jan 07 19:24:24.571319 2016][:错误][pid 12049][客户
三十、 PHP致命错误:调用/var/www/html/app/models/Abstracts.PHP中非对象上的成员函数bind_param()
第40行,参考:
有什么问题吗?嗨,这里你可以举个小例子
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0)
{
$tmpName = $_FILES['image']['tmp_name'];
$fp = fopen($tmpName, 'rb'); // read binary
}
try
{
$stmt = $conn->prepare("INSERT INTO images ( picture ) VALUES ( ? )");
$stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$conn->errorInfo();
$stmt->execute();
}
catch(PDOException $e)
{
'Error : ' .$e->getMessage();
}
有关更多信息,请查看此链接并查找示例
请尝试并祝您好运您可能需要增加php脚本本身的最大执行时间。供参考。错误500告诉我们的不多。我建议您在Ubuntu的服务器(apache2?@RodolfoAndrade)中获取更多关于您的错误的信息。您知道我如何通过SSH客户端来实现这一点吗?不幸的是,这是我与服务器交互的唯一形式,我不懂Linux?是的,是apache2。@DerekPollard我会调查一下。@RodolfoAndrade我发现了错误,请参阅后期编辑。