php - tiene - permisos wordpress linux
No se puede escribir en/tmp con php, a pesar de los permisos 777 y ningĂșn valor open_basedir (3)
De acuerdo con el mensaje de error mostrado, no hay carpeta /tmp/
. Tal vez la carpeta tmp está en otro lugar que la raíz?
Este error no se mostrará si el archivo realmente no existe, ya que intentará crearlo.
El método x
también devuelve una advertencia si el archivo ya existe. (doc: http://www.php.net/manual/en/function.fopen.php )
Creo que esto también se debe a otra razón por la que podría salir mal, porque el usuario que ejecuta PHP no tiene derechos para escribir en la carpeta /tmp/
.
Estoy intentando escribir un archivo en mi directorio / tmp (en un servidor apache) con la función php fopen, pero falla:
<?php
$handle = fopen("/tmp/test.txt", "x");
if ($handle) echo "Success!";
else print_r(error_get_last());
?>
Esto devuelve el mensaje de error "no se pudo abrir la transmisión: no existe tal archivo o directorio". El directorio / tmp tiene los permisos establecidos en drwxrwxrwt y puedo ver que el usuario web está escribiendo otros archivos en él. Misteriosamente, si apunto el script a otra carpeta con permisos 777, devuelve el éxito. Pero mi open_basedir no tiene "valor". Tengo safe_mode = on y allow_url_fopen = off, pero no creo que eso deba explicarlo.
Esto es PHP 5.3.10 en Apache 2.0.
Intenta agregar /tmp
a open_basedir
. Por ejemplo:
php_admin_value open_basedir /some/path:/another/path:/tmp
No estoy seguro de que este sea el problema al que realmente te enfrentaste, pero encontré tu pregunta mientras buscaba esta solución, así que supongo que eso podría ayudar a alguien más.
Tengo absolutamente el mismo problema. PHP no reportó ningún problema al abrir el archivo en /tmp/myoutputfile
, pero no hay ningún archivo en esa ruta. Luego find / -name "myoutputfile"
y lo encontré en /tmp/systemd-.../myoutputfile
. Google encontró http://blog.oddbit.com/2012/11/05/fedora-private-tmp/ . Así que en mi situación es una combinación de systemd + apache. Espero que esto ayude a alguien.