Pregunta

Estoy tratando de escribir un script de instalación para un sistema que he estado trabajando. El script copia algunos archivos por defecto de un lugar a otro, y crea varias carpetas para ellos. Tengo este pedazo de trabajo un placer, pero el único problema es que cuando me conecto a través de FTP, no puedo editar o borrar los archivos que PHP se ha movido para mí.

Si me conecto a través del terminal que pueda felizmente "sudo chmod -R 777 [dir]" y el problema desaparece, por lo que la pregunta es:

¿Qué me falta en el extremo PHP?

mi función de los permisos es el siguiente:

function set_permissions($file) 
{
  if (file_exists($file)):
    chmod($file,0777);  
  endif;                
}

Yo entiendo que no es 100% ideal para establecer los permisos a 777, pero estoy simplemente tratando de lograr el resultado de ser capaz de editar los archivos a través de FTP, después de PHP les ha movido para mí.

Hope He sido lo suficientemente claro. Esto me resulta desconcertante ahora por lo que cualquier ayuda se agradece:)

Tom

editar Todo el proceso es como sigue:

mkdir($root_dir, 0777);
mkdir($images_dir, 0777);
if (!copy($orig_logo, $new_logo)) 
{
  echo "failed to copy $orig_logo...";
} 
  // see function above for details on set_permissions...       
  $this->set_permissions($new_logo);
}

(Todos los caminos son correctos también)

editar : El archivo antes me conecto a través del terminal tiene los permisos siguientes:

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

El archivo después de inicio de sesión y la cambio tiene:

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

El sistema es un sistema de gestión de contenidos que permite editar y borrar archivos a través del área de administración, y, curiosamente, esto funciona bien. Parece que los archivos de alguna manera están encerrados desde cualquier otra persona que no sea Apache ... pero la información de archivo sugiere lo contrario. Es extraño ...

¿Fue útil?

Solución

Parece que su directorio necesita los permisos de escritura también.

Otros consejos

¿Seguro existe el archivo o la ruta es correcta?

Si puede chmod -R 777 a través del terminal de solucionar el problema, a continuación, ¿cuáles fueron los permisos otorgados a por PHP antes de ejecutar chmod ??? Obviamente no 777. Mi conjetura es que su código PHP no está cambiar realmente los permisos.

lookAt a su código, la función de su permiso de cambio podría estar fallando en silencio si no existe el archivo - (?? Carpeta equivocada ruta relativa mal) por ejemplo, se está dando nombres de los archivos no válidos, pero no se puede decir debido a que su función set_permissions() es demasiado miedo de que le advierte. Usted debe volver a escribir de la siguiente manera:

function set_permissions($file) 
{
  if (!file_exists($file))
    throw new Exception(__FUNCTION__ . "() file doesn't exist! '$file'");
  chmod($file,0777);
  error_log("chmod 777 $file"); // debug
}

Esto le permite ver lo que está pasando, y que sin duda va aviso si usted no ha conseguido los nombres de archivo correcto.

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