2016-10-15 1 views
0

私は(CentOSの7上の)PHP 7とMariaDB 5.5.47を使用していますし、次のコードの実行が成功し、エラーなしで:PHP 7とMySQLを使用して、POSTからlongblobカラムにファイルを挿入するにはどうすればよいですか?

のMySQL Workbenchを使用して
$id = 3; 
$tmp_name = $_FILES['file']['tmp_name']; 
$fp = fopen($tmp_name, 'rb'); 

$statement = $db->prepare("INSERT INTO Foo (id, data) VALUES (?, ?)"); 
$statement->bindParam(1, $id); 
$statement->bindParam(2, $fp, PDO::PARAM_LOB); 
$statement->execute(); 
$statement->closeCursor(); 
close($fp); 

それは "データ" 欄を示しては、 "BLOB" であります(私は何も挿入しない場合、nullとは対照的に)。データを照会しようとすると、ゼロバイトです。このコードはPHP 5で動作しましたが、PHP 7ではうまくいかない理由は何も見つかりませんでした。

+0

このコードは、より大きいファイル(20MB以上)をアップロードしようとするまで機能します。私の "答え" – codecraig

答えて

1

内容を読み、それを渡すことに切り替えました。 > 20メガバイトのファイルをアップロードする際

しかし、私は、メモリに関するエラーに遭遇:

致命的なエラーが発生しまし

: 排出134217728バイトの許可メモリサイズは、(81606320バイトを割り当てしようとした)でライン上の/var/www/app/API/docs.php

0

メモリ使用量を増やすPHPの方法を使用してください:

ini_set( 'memory_limit'、 '210M');

すでに128Mが割り当てられていて、80Mを割り当てようとしていたことに注目してください。ファイルのサイズはそれですか?

必要に応じてinit_setの値を調整します。しかし、... MySQLが同じサーバ上にある場合は、それを下に調整する必要があります。 innodb_buffer_pool_sizeは、調整する可能性が高いです。

パフォーマンスを向上させるためにスワップするのはひどいことに注意してください。

関連する問題