#php #iis #iis-8 #file-put-contents
#php #iis #iis-8 #файл-поместить-содержимое
Вопрос:
Пожалуйста, помогите, я записываю файл в свою applicationdir/uploads/
папку. При записи файла на мой localhost через wamp64 host
файл генерируется идеально.
Однако, когда я пытаюсь это сделать на своем IIS 8.0 server
, форма отправляется, ошибок не выдается, но файл не создается…
Я использую File_Put_Contents
команду для создания файла.
Я прочитал другие сообщения и, как указано другими, я изменил свое applicationpoolMYAppPool
имя, чтобы оно напоминало название приложения (безрезультатно). Я также разрешил iis_iusrs
разрешения на запись в каталог.
Есть мысли? PHP НИЖЕ:
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' amp;amp; !empty( $_POST['xml'] ) ){
$Counter = date("Y-m-d") . ' ' . Time();
$file = 'uploads/' . $Counter . ' - Export.xml';
$bytes = file_put_contents( $file, $_POST['xml'] );
exit( sprintf('%d bytes written to %s',$bytes,realpath($file) ) );
}
?>
Скриншот:
Я не понимаю, как это изменит ситуацию, но вот код javascript, передающий xml-данные на сервер. Javascript:
<script>
var template = [
'<?xml version="1.0"?>',
'<unattend xmlns="urn:schemas-microsoft-com:unattend">',
'<Data>',
' <SubmitBy><?SubmitBy?></SubmitBy>',
' <Level10><?Level10?></Level10>',
' <Level1><?Level1?></Level1>',
' <Level2><?Level2?></Level2>',
' <Level3><?Level3?></Level3>',
' <Level4><?Level4?></Level4>',
' <Title><?Title?></Title>',
' <Subject><?Subject?></Subject>',
' <Author><?Author?></Author>',
' <Keywords1><?Keywords1?></Keywords1>',
' <Keywords2><?Keywords2?></Keywords2>',
' <Destroy_Date><?Destroy_Date?></Destroy_Date>',
'</Data>',
'</unattend>'
].join('rn');
const ajax=function( params ){
with( new XMLHttpRequest() ){
onreadystatechange=function(e){
if( this.status==200 amp;amp; this.readyState==4 ){
alert( this.response )
}
}
open( 'POST', location.href, true );
setRequestHeader('Content-Type','application/x-www-form-urlencoded');
send( params );
}
}
document.addEventListener('DOMContentLoaded', ()=>{
document.querySelector('input[ type="button" ]').addEventListener('click', e=>{
let vars={};
Array.prototype.slice.call( document.querySelectorAll('form > input[ type="text" ]') ).forEach( field =>{
vars[ field.name ]=field.value
});
Array.prototype.slice.call( document.querySelectorAll('select') ).forEach( field =>{
vars[ field.name ]=field.value
});
Array.prototype.slice.call( document.querySelectorAll('form > input[ type="date" ]') ).forEach( field =>{
vars[ field.name ]=field.value
});
let xml=template.replace(/<?(w )?>/ig, (match,name)=>{
return vars[name];
});
ajax.call( this, 'xml=' xml);
})
});
</script>
Комментарии:
1. Что именно является сообщением об ошибке?
2. Похоже, это моя проблема… Сообщения об ошибке нет… Форма отправляет и правильно отображает мой POST при отправке, но, похоже, она просто не создает файл.
3. попробуйте протестировать подобное
if(file_put_contents($file, $content) === false) {echo 'something wrong happens'; }
, просто чтобы дважды проверить, что ничего не происходит4. Добавлен код, сообщение не отображалось, просто отправлено как обычно…
5. Где ваш код? Я не вижу ничего в вашем сообщении. Кроме того, какой уровень ошибок вы настроили?