Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-插入BLOB时出现服务器故障_Php_Mysql_Amazon Web Services_Amazon Ec2_Ubuntu 14.04 - Fatal编程技术网

Php MySQL-插入BLOB时出现服务器故障

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 以下是处理向

在我的PHP应用程序中,用户可以选择上载一个文件,该文件将存储在我的MySQL数据库的一个表中

在我的XAMPP On Windows实例上,这可以正常工作。但是,在AWS EC2 Ubuntu上,当表单与所选文件一起提交时,web浏览器会出现“服务器错误500网站在检索时遇到错误。它可能因维护而关闭或配置不正确。”

我最初检查了
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我发现了错误,请参阅后期编辑。