Я пишу функцию на php, на стороне клиента у меня есть изображение холста, которое я использую toDataUrl() вместе с именем файла для сохранения изображения на сервере. Вот код:
<?php
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$data = json_decode($imageData, true);
$file = $data["file"];
$image = $data["data"];
$filteredData=substr($image, strpos($image, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen( 'image/' . $file , 'wb' );
fwrite( $fp, $unencodedData);
fclose( $fp );
?>
Дело в том, что этот код работает. И на двух из трех страниц, которые я использовал, он работает нормально. Проблема в том, что когда я копирую и вставляю его в третий раз, чтобы снова реализовать, по какой-то причине файл создается на сервере, за исключением того, что данные не записываются в файл. Я не думаю, что это проблема на стороне клиента, потому что я пишу сообщение об отладке в javascript и отладочное эхо в PHP, и оба могут нормально распечатать данные. Я сделал этот короткий файл отладки:
<?php
$fp = fopen('data.txt', 'wb');
if(is_writable('data.txt')){
echo "file is writable<br>";
}
if(fwrite($fp, 'test') == FALSE){
echo "failed to write data<br>";
}
fclose($fp);
?>
И выход
file is writable
failed to write data
Я пробовал использовать chmod и настраивать все, папку, текстовый файл, прежде чем писать в него на 0777, и все равно получаю тот же результат; файл создается, но в него не записываются данные. Есть ли что-то, что мне не хватает, или какие-либо другие подходы, которые могут помочь. Я ничего не нашел в Google и до сих пор не понимаю, почему один и тот же код дважды работал точно так, как ожидалось, прежде чем внезапно остановиться без видимой причины.
Заранее спасибо.