【问题标题】:MySQL - Server Fault When Inserting BLOB [duplicate]MySQL - 插入 BLOB 时出现服务器故障 [重复]
【发布时间】: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


【解决方案1】:

你好,你可以举个小例子

 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();
    }

有关更多信息,请查看此链接并查找示例

insert with pdo php mysql blob

请尝试,祝你好运

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 2018-06-13
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多