Я всегда получаю ошибку 500 при попытке загрузить изображение в tinymce. Вот мой postAcceptor.php (который я назвал upload.php).
Запуск IIS 10 на серверном ядре 2016 года в дата-центре.
$accepted_origins = array("http://my.site.com", "http://172.16.16.6");
$imageFolder = "uploads/";
reset($_FILES);
$temp = current($_FILES);
if(is_uploaded_file($temp['tmp_name'])){
if(isset($_SERVER['HTTP_ORIGIN'])){
// Same-origin requests won't set an origin. If the origin is set, it must be valid.
if(in_array($_SERVER['HTTP_ORIGIN'], $accepted_origins)){
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
}else{
header("HTTP/1.1 403 Origin Denied");
return;
}
}
// Sanitize input
if(preg_match("/([^\w\s\d\-_~,;:\[\]\(\).])|([\.]{2,})/", $temp['name'])){
header("HTTP/1.1 400 Invalid file name.");
return;
}
// Verify extension
if(!in_array(strtolower(pathinfo($temp['name'], PATHINFO_EXTENSION)), array("gif", "jpg", "png"))){
header("HTTP/1.1 400 Invalid extension.");
return;
}
// Accept upload if there was no origin, or if it is an accepted origin
$filetowrite = $imageFolder . $temp['name'];
move_uploaded_file($temp['tmp_name'], $filetowrite);
// Respond to the successful upload with JSON.
echo json_encode(array('location' => $filetowrite));
} else {
// Notify editor that the upload failed
header("HTTP/1.1 500 Server Error");
}
Вот мой сценарий в верхней части страницы формы:
<script src="/tinymce/js/tinymce/tinymce.min.js?apiKey=myapiishere">
</script>
<script>tinymce.init({ selector:'textarea',
plugins: [
'advlist autolink lists link image charmap print preview hr anchor
pagebreak',
'searchreplace wordcount visualblocks visualchars code fullscreen',
'insertdatetime media nonbreaking save table contextmenu directionality',
'emoticons template paste textcolor colorpicker textpattern imagetools
codesample toc'
],
toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft
aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
toolbar2: 'print preview media | forecolor backcolor emoticons | codesample',
// enable title field in the Image dialog
image_title: true,
// enable automatic uploads of images represented by blob or data URIs
automatic_uploads: true,
// URL of our upload handler (for more details check:
https://www.tinymce.com/docs/configure/file-image-
upload/#images_upload_url)
images_upload_url: 'upload.php',
relative_urls : false,
remove_script_host : false,
document_base_url : "http://my.site.co.uk",
// here we add custom filepicker only to Image dialog
file_picker_types: 'image',
// and here's our custom image picker
file_picker_callback: function(cb, value, meta) {
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.onchange = function() {
var file = this.files[0];
var id = 'blobid' + (new Date()).getTime();
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
var blobInfo = blobCache.create(id, file);
blobCache.add(blobInfo);
cb(blobInfo.blobUri(), { title: file.name });
};
input.click();
}
});</script>
И моя форма:
<textarea class="tinymce input" name="article" rows="10" cols="40">
</textarea>
Я проследил ошибку до строки «if (is_uploaded_file ($ temp [‘tmp_name’])) {» в файле upload.php, который дает мне ошибку 500, но я не знаю, почему это не так за работой. У меня это работает на другом сайте с почти идентичным кодом. Мой инстинкт подсказывает мне, что это проблема конфигурации сервера, но я уверен в этом. У кого-нибудь есть идеи?
Вещи, которые я пробовал:
Заранее спасибо за любые указатели.
Задача ещё не решена.
Других решений пока нет …