2014-09-02 16 views
7

Ho creato un sito Web semplice che funziona correttamente su localhost. Così l'ho messo su un server Windows 2008r2 IIS e ora i miei script PHP non scrivono più nei miei file JSON. Ho controllato il server e PHP è installato su di esso, quindi non so davvero cosa c'è che non va o dove cercare.Gli script PHP vengono scritti sul file su localhost ma non sul server IIS

Non riesco ancora a funzionare, quindi ho pensato di spiegare la situazione in modo più dettagliato.

Quindi questo script funziona su localhost ma non sul server IIS.

<?php 
$myFile = "../json/countries.json"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = json_encode($_POST["data"]); 
fwrite($fh, $stringData); 
fclose($fh) 
?> 

Ho provato ad aggiungere:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

e

chmod("../json/countries.json", 0644); 

al php, ma non vedere alcun risultato diversi o eventuali errori.

Ecco la funzione javascript che avvia il processo e l'output dell'oggetto nella console mostra i dati corretti da salvare.

function saveJson(object, file) { 

console.log("Saving JSON data: " + JSON.stringify(object)); 

$.ajax 
({ 
    type: "POST", 
    dataType : 'json', 
    async: false, 
    url: file, 
    data: { data:object }, 
    success: function() {console.log("Thanks!"); }, 
    failure: function() {console.log("Error!");} 
}); 

}

Ancora i file JSON non vengono modificate. Qualcuno di buono con Windows Server e PHP che potrebbe sapere perché?

Grazie

+0

Quale messaggio di errore hai fatto si riceve? Quale parte della sceneggiatura non funziona la parte aperta o la parte di scrittura. Hai provato a utilizzare IIS come amministratore –

+0

Non disponi dell'autorizzazione per il server se non quella di connettersi ad esso tramite Desktop remoto. E non ricevo alcun messaggio di errore. I dati non sono solo scritti nel file. – thehindutimes

+0

Disponi di autorizzazioni file sufficienti per scrivere nel file? –

risposta

3

Questo tipo di problema si verifica a causa di solo tre ragioni:

  1. Non ce l'ho corretta Directory owner.Ex: - In utente di default di Apache è www: i dati.
    • Prima controlla il proprietario della directory.
  2. Non si dispone dell'autorizzazione di scrittura sufficiente per directory vale a dire 755
    • Controllare directory permesso
  3. percorso non è corretto in una directory di scrivere o file di caricamento.
    • Controllare il percorso della directory in cui si sta scrivendo il file.

Secondo il documento php Installation on Windows systems utente predefinito è IUSER

Quindi è necessario impostare il proprietario della directory 'IUSR' fa parte delle IIS_IUSRS gruppo, se non la sua opere quindi provare a impostare 'IIS AppPool\{YouApplicationPoolName}' from IIS AppPool\DefaultAppPool Es. per esempio. IIS AppPool\yourdomain.com. Questa impostazione è richiesta per IIS8.

  1. Prima prova a cambiare il proprietario in IUSER. Dovrebbe funzionare secondo il documento php.
  2. impostare l'autorizzazione di scrittura per la directory.

Come cambiare una directory il permesso & gruppo di utenti di sistema in Windows.

Rightclick on directory->security->edit 

Controllare la schermata allegata.

Change user group & permission

+0

Sembra che tu conosca la tua roba! Dove controllate il passaggio 1? – thehindutimes

+0

@thehidutimes Aggiunto screenshot per la tua query. Vai al tuo server utilizzando la condivisione desktop remoto –

+0

o chiedi all'amministratore di sistema di eseguire questa operazione –

0
  1. Quale versione di PHP stai usando. Se è inferiore a 5.2, la funzione di codifica JSON potrebbe non funzionare. Usa phpinfo() per scoprirlo.

  2. Potrebbe anche essere che $ _POST ['dati'] non esiste. prova a mettere una matrice invece per vedere se questo è il problema. Come: array (1,2,3);

  3. Anche se non vengono visualizzati avvisi, utilizzare: error_reporting (E_ALL); O error_reporting (-1); nella parte superiore del tuo script. Potrebbe essere che il tuo host stia spegnendo questi errori. questo ti permetterà di vedere qual è il problema.

  4. L'host ha anche la possibilità di disattivare determinate funzioni PHP. Contattare il servizio clienti per quanto riguarda questo problema. Anche se trovo molto improbabile che abbiano disattivato quelli che stai usando.

  5. Assicurarsi che il file esista relativamente a dove viene eseguito il codice PHP. Se questo è il problema, dovrebbe essere eseguito il comando die. È possibile vedere il file esiste utilizzando:

    if (file_exists ($ nomefile)) echo "file esiste";

    else echo "il file non esiste";

Se nessuno dei lavori di cui sopra, allora non ho la più pallida idea! Scusate.

+0

Ok, grazie. Lo proverò. ho provato ad aprire lo script php nel browser dal enetering l'url ad esso e che mi ha dato il messaggio di comando die. Questo significa che il punto 5 è forse il problema? – thehindutimes

+0

Sì! Assicurati che il file sia reale nel tuo file. –

+0

Modificato $ myFile = "json/countries.json"; a $ myFile = "../json/countries.json"; ma non funziona ancora. Gli script php si trovano in una cartella php e il json in una cartella json – thehindutimes

0

Aggiungi IIS_IUSRS con accesso "eseguire, lista, leggere" alla scheda di sicurezza sulle proprietà.

Problemi correlati