Domanda

Sono bloccato e ha bisogno di una mano. Spero che qualcuno possa aiutare?

Qualcuno ha qualche idea del perché sto ottenendo "scrittura non riuscita" in questo codice?

$write_file = "/usr/home/public_html/php/users_v2.sql";
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");

if (is_writeable($write_file)) {
    if ($write_handle === FALSE) echo 'Failed handle?!';
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n";
}

fclose($write_handle);

Grazie in anticipo.

È stato utile?

Soluzione

Utilizzando l'operatore OR quando si crea il handle di file, si restituisce un valore booleano a seconda dell'operazione. Così $ write_handle conterrà vero o falso, al posto della risorsa file. Un modo migliore per aprire un file per la scrittura e testare che era successo sarebbe questo:

$write_handle = fopen($write_file, 'w');
if ($write_handle === false)
{
    die('Could not open file ' . $write_file);
}

Inoltre, è possibile utilizzare la funzione file_put_contents () che gestisce le fopen (), fwrite () e fclose () per voi. Ho solo raccomandare questo se si sta eseguendo una sola scrittura per lo stesso file, in quanto sarà un sacco di spese generali, e se non si passa la bandiera FILE_APPEND, sarà svuotare il file per ogni scrittura.

Altri suggerimenti

ho visto usato in tutto il mondo, ma il problema è il || die ( "couln't users_v2 aperta!");

Per prima cosa ho aggiunto:

error_reporting(E_ALL);

per vedere che cosa PHP è di reporting per gli errori.

$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");
fclose($write_handle);

Restituisce un invalido maniglia flusso di errore e file di manico di 1. Senza di essa l'handle di file restituito è "Resource id # x".

La modifica della linea:

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!");

e il tuo codice funziona bene. Gonna go inviare questo su php.net ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top