Discussion:
Problemas con MKDIR y php
(demasiado antiguo para responder)
sase
2004-02-22 05:42:10 UTC
Permalink
Buenas, ten¡a una pagina web con phpnuke, bajo windows, donde para subir
archivos a la web, hac¡a uso de la funcion mkdir. El problema es que al
portarla a linux no funciona. A continuacion pongo el error:

En resumen, en un fichero .php se llama a "mkdir", y lo que bajo windows
funciona, da estos errores bajo linux:

š Que permisos hay que dar, o que es lo que hay que hacer?

Gracias por adelantado. ( posteo el mensaje en dise€o de webs tambien.


Warning: mkdir() failed (No existe el fichero o el directorio) in
/var/www/html/modules/Downloads/index.php on line 438

Warning: mkdir() failed (No existe el fichero o el directorio) in
/var/www/html/modules/Downloads/index.php on line 439
--
Lo que me preocupa no es que me hayas mentido, sino que, de ahora en
adelante, no podré creer en tí.

-

Usando Xnews 5.03.24 en Windows XP (5.1-2600) Service Pack 1
_______________________________________________________________

Versión actual: Xnews 5.04.24
Web Xnews : http://xnews.newsguy.com
FAQ's Retecal : http://www.retecal.tk
_______________________________________________________________
Oscar Garcia
2004-02-22 11:08:35 UTC
Permalink
Post by sase
š Que permisos hay que dar, o que es lo que hay que hacer?
Ten en cuenta que al enviar cosas por ftp a un servidor, estos archivos
toman un usuario y grupo dueño que tiene derecho a escribir, leer y
ejecutar todo aquello que creemos, pero sin embargo no le damos permisos
de escritura a otros usuarios ni a nuestro grupo.

Para que puedas crear directorios en cierto directorio debes antes darle
permisos de "creación" (w) al directorio del que va a colgar los
directorios que desees.

¿Cómo hacerlo sin acceso telnet o ssh al servidor? con la orden chmod de
ftp.
Post by sase
Warning: mkdir() failed (No existe el fichero o el directorio) in
/var/www/html/modules/Downloads/index.php on line 438
También podría deberse a otro problema (dado el error exacto que nos
muestras aquí). ¿Has pensado que en unix "Downloads" no es lo mismo que
"downloads"? ¿Has comprobado que el directorio se llama tal y como tú
deseas y esperas?

Un saludo y suerte.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Alvaro G. Vicario
2004-02-22 13:37:13 UTC
Permalink
¨ Que permisos hay que dar, o que es lo que hay que hacer?
Cuando te conectas por FTP para subir los archivos lo haces con tu usuario
(digamos "pepito") y por tanto en los archivos queda como propietario
pepito. Cuando se ejecuta un script en PHP se hace con el usuario genérico
del servidor web (normalmente "nobody" o "apache"). Por defecto, el usuario
apache no tiene permiso de escritura sobre los directorios de pepito,
porque eso significaría que cualquier usuario del servidor que tuviera
página web podría escribir en tu directorio. Lo que tienes que hacer es
crearte un directorio donde dejarás que PHP escriba a gusta. A ese
directorio le tienes que dar permisos de forma que el usuario apache pueda
escribir. Como imagino que sólo tienes acceso por FTP, lo único que puedes
hacer es dar permiso de escritura a todo el mundo (la opción se suele
llamar "chmod" o "Permisos") o sólo al grupo (si diera la casualidad de que
el grupo es "apache", que no creo).
--
--
-+ Álvaro G. Vicario - Burgos, Spain - ICQ 46788716
+- http://www.demogracia.com (la web de humor para mayores de 100 años)
++ «Sonríe, que te vamos a hacer una foto para la esquela»
--
sase
2004-02-22 16:13:10 UTC
Permalink
Gracias por la información.El acceso que tengo es total al servidor, pues
lo que estamos haciendo precisamente es montarlo, para alojar una web. DE
todas formas no podré probar lo que decías hasta el martes que me desplace
al lugar.

El directorio sobre el que está la web es /var/www/html -> aquí todo el
php, y los ficheros que se suben vía web van a /var/www/html/upload

También me he leído que pruebe: chown -R nobody.nobody "directorio"

Gracias .
Post by Alvaro G. Vicario
Post by sase
š Que permisos hay que dar, o que es lo que hay que hacer?
Cuando te conectas por FTP para subir los archivos lo haces con tu
usuario (digamos "pepito") y por tanto en los archivos queda como
propietario pepito. Cuando se ejecuta un script en PHP se hace con el
usuario genérico del servidor web (normalmente "nobody" o "apache").
Por defecto, el usuario apache no tiene permiso de escritura sobre los
directorios de pepito, porque eso significaría que cualquier usuario
del servidor que tuviera página web podría escribir en tu directorio.
Lo que tienes que hacer es crearte un directorio donde dejarás que PHP
escriba a gusta. A ese directorio le tienes que dar permisos de forma
que el usuario apache pueda escribir. Como imagino que sólo tienes
acceso por FTP, lo único que puedes hacer es dar permiso de escritura
a todo el mundo (la opción se suele llamar "chmod" o "Permisos") o
sólo al grupo (si diera la casualidad de que el grupo es "apache", que
no creo).
--
Lo que me preocupa no es que me hayas mentido, sino que, de ahora en
adelante, no podré creer en tí.

-

Usando Xnews 5.03.24 en Windows XP (5.1-2600) Service Pack 1
_______________________________________________________________

Versión actual: Xnews 5.04.24
Web Xnews : http://xnews.newsguy.com
FAQ's Retecal : http://www.retecal.tk
_______________________________________________________________
Oscar Garcia
2004-02-22 17:18:46 UTC
Permalink
Post by sase
El directorio sobre el que está la web es /var/www/html -> aquí todo el
php, y los ficheros que se suben vía web van a /var/www/html/upload
Entra por ftp a /var/www/html/ y dale permisos totales (ojo, para crear
archivos o directorios, para lectura o escritura están los permisos
individuales de cada archivo): chmod 777 upload (si no tienes ese
comando en tu cliente ftp ponlo como comando raw).
Post by sase
También me he leído que pruebe: chown -R nobody.nobody "directorio"
Creo (corregidme si me equivoco) que FTP (en unix) no soporta CHOWN,
pero sí CHMOD. La idea es dar permisos (tal y como te he indicado antes)
a todos los usuarios para crear directorios o archivos en ese directorio
(+x) es la manera más compatible que conozco de hacerlo y no necesitas
acceso total a la máquina para hacerlo.

Un saludo de nuevo.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/
sase
2004-02-22 23:46:15 UTC
Permalink
Parece que funciona.
Muchisimas gracias.
Post by Oscar Garcia
Post by sase
El directorio sobre el que está la web es /var/www/html -> aquí todo
el php, y los ficheros que se suben vía web van a /var/www/html/upload
Entra por ftp a /var/www/html/ y dale permisos totales (ojo, para crear
archivos o directorios, para lectura o escritura están los permisos
individuales de cada archivo): chmod 777 upload (si no tienes ese
comando en tu cliente ftp ponlo como comando raw).
Post by sase
También me he leído que pruebe: chown -R nobody.nobody "directorio"
Creo (corregidme si me equivoco) que FTP (en unix) no soporta CHOWN,
pero sí CHMOD. La idea es dar permisos (tal y como te he indicado antes)
a todos los usuarios para crear directorios o archivos en ese
directorio
Post by Oscar Garcia
(+x) es la manera más compatible que conozco de hacerlo y no necesitas
acceso total a la máquina para hacerlo.
Un saludo de nuevo.
--
Lo que me preocupa no es que me hayas mentido, sino que, de ahora en
adelante, no podré creer en tí.

-

Usando Xnews 5.03.24 en Windows XP (5.1-2600) Service Pack 1
_______________________________________________________________

Versión actual: Xnews 5.04.24
Web Xnews : http://xnews.newsguy.com
FAQ's Retecal : http://www.retecal.tk
_______________________________________________________________
Loading...