Pregunta

Estoy atascado y en la necesidad de una mano. Espero que alguien pueda ayudar?

Alguien tiene alguna idea de por qué estoy recibiendo "escritura fallido" en este código?

$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);

Gracias de antemano.

¿Fue útil?

Solución

Al utilizar el operador O al crear el identificador de archivo, devuelve un valor booleano dependiendo de la operación. Así $ write_handle contendrá verdadera o falsa, en lugar del recurso de archivo. Una mejor manera de abrir un archivo para escribir y probar que era un éxito sería la siguiente:

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

Además, se puede usar la función file_put_contents () que se ocupa de los fopen (), fwrite () y fclose () para usted. Sólo recomiendo esto si se está ejecutando una sola escritura en el mismo archivo, ya que será una gran cantidad de gastos generales, y salvo que se pasa la bandera FILE_APPEND, se vaciará el archivo para cada escritura.

Otros consejos

he visto que se usa en todas partes, pero el problema es el || die ( "users_v2 abierta Couln't!");

Primero añadí:

error_reporting(E_ALL);

para ver lo que php se informa de los errores.

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

devuelve un error y el archivo de mango mango de transmisión no válida de 1. Sin ella el identificador de archivo devuelto es "# x Identificación de recursos".

Cambio de la línea a:

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

y el código funciona bien. Va a ir este post en php.net ahora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top