2011-04-18 11 views
7

Tengo un script PHP que acepta todos los correos electrónicos (comodines) de mi dominio e inserta los datos en MySQL.Correo electrónico entrante a PHP: necesita escribir archivos adjuntos en el directorio web

El comienzo de la secuencia de comandos tiene esta línea:

#!/usr/bin/php -q 

A continuación, se parece a un script PHP regular. La parte que escribe los archivos adjuntos en el disco parece funcionar pero los permisos en las nuevas carpetas donde están almacenados fueron creados por el usuario 'nobody'.

¿Cómo puedo editar los permisos para que después de que estos archivos se escriban en el disco, puedan ser accedidos por el usuario del servidor web/servidor web?

¡Gracias por la ayuda!

(Fedora 14 servidores Linux, Postfix)

+2

me gustaría ver el guión después de '#!/Usr/bin/php -q' ... ¿Cómo se leen los archivos adjuntos de correos electrónicos y guardarlos? – Rudie

Respuesta

2

Puede preformar las operaciones de su sistema de archivos por FTP para que tenga los mismos permisos que su usuario. es mejor que darle a todos los usuarios de PHP el acceso al servidor a sus archivos. http://php.net/ftp

+0

Tengo los datos del archivo adjunto codificado base64 que se analizan desde los encabezados del correo electrónico en una cadena. ¿Puedo usar las funciones FTP de PHP para cargar un archivo si no tengo un archivo fuente para transferir? – grandcameo

+0

¡Gracias, utilicé las funciones de FTP y lo solucioné! – grandcameo

0

lo que el usuario está ejecutando como PHP? PHP tiene una función chmod, pero no puede elevar privilegios más altos de lo que usa el usuario PHP.

Si eso no soluciona el problema, ¿podría cambiar el directorio de archivos adjuntos para que sea propiedad del usuario con el que se ejecuta PHP?

+0

PHP se ejecuta como 'nadie' y no creo que esté usando Apache en absoluto. Traté de agregar PHP ('nadie') al grupo que tiene permiso para escribir y leer desde esa carpeta, pero no funcionó. – grandcameo

0

Yo sugeriría que hacer lo siguiente:

chown -R apache: apache directory_name

Esto es debido a que PHP se ejecuta como el usuario del servidor web (creo que esto es Apache en Fedora) De lo contrario, si está utilizando un servidor web diferente, cambie la propiedad de los archivos al usuario del servidor web (seguramente encontrará esto en los archivos de configuración del servidor).

+0

No creo que Apache se esté utilizando para ejecutar este script ... Todos los correos electrónicos a mi dominio entran a mi servidor como de costumbre, lo cual invoca el script PHP. Todos los datos se graban en MySQL y los archivos se escriben en un directorio en el que el servidor web (nginx para archivos estáticos) puede comenzar a servir archivos, excepto que el servidor no tiene permiso. – grandcameo

+0

En ese caso, deberá hacer esto: chown -R nginx: nginx nombre_directorio –

Cuestiones relacionadas