Problemas con funcion copy()

Iniciado por Diabliyo, 7 Enero 2007, 00:47 AM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Hola:

Utilizo un servidor Windows Small Bussiness Server 2003 con ISS, SQL y PHP funcionando, el problema que se me presenta es que NO puedo copiar archivos/imagenes/text-files (nada) hacia el servidor con la funcion copy ni move_uploaded_file() !!!...

NOTA IMPORTANTE: por razones de trabajo es necesario que el codigo funcione en WINDOWS :(, ya que este mismo codigo corre perfectamente en mi Linux (porke es mi propia Laptop).

Este es el error:
Warning: copy(c:\inetpub\wwwroot\jorge\fotos/001.htm) [function.copy]: failed to open stream: Permission denied in c:\inetpub\wwwroot\jorge\fotos\loader_files.php on line 88

Y aqui un poquito dle codigo:
<?php
if( $_FILES["fotos"] )
{
$urlgetcwd(). "/";
if( copy$_FILES["fotos"]["tmp_name"], $url.$_FILES["fotos"]["name"] ) == FALSE )
{
echo "Problemas para subir el Archivo: "getcwd();
echo "<br>Nombre: "$_FILES["fotos"]["name"];
echo "<br>Tipo: "$_FILES["fotos"]["type"];
echo "<br>TempName: "$_FILES["fotos"]["tmp_name"];
echo "<br>Hacia: "$url.$_FILES["fotos"]["name"];
}
else
header"Location: loader_files.php" );
}
else
echo "ERROR";
?>


Otro dato importante que dejo, son la configuracion del php.ini, aqui dejo algunas cosas que creo importante que sepan:

::sessions]::
session.save_path = "C:\Inetpub\wwwroot\php_tmp"

::file uploads::
upload_tmp_dir = "C:\Inetpub\wwwroot\php_tmp"


Ayuda porfavor !!... Hasta luego !!

bye bye

SeniorX

Lo principal de tu problema es:
CitarPermission denied in c:\inetpub\wwwroot\jorge\fotos\loader_files.php

Tienes que darle los permisos correspondientes a loader_files.php.
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}

Precaución: La programacion puede producir adiccion

Ertai

Cuidado!

c:\inetpub\wwwroot\jorge\fotos/001.htm

Debe ser...

Citarc:\inetpub\wwwroot\jorge\fotos\001.htm

Igualmente creo que es un problema de permisos. Dale permisos 777 a esa carpeta.

Saludos ;)
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Diabliyo

Cita de: Ertai en  7 Enero 2007, 02:22 AM
Cuidado!

c:\inetpub\wwwroot\jorge\fotos/001.htm

Debe ser...

Citarc:\inetpub\wwwroot\jorge\fotos\001.htm

Igualmente creo que es un problema de permisos. Dale permisos 777 a esa carpeta.

Saludos ;)

Estoy en Windows, creo que NO es posible usar el simbolo: \... ya que al momento de poner por ejemplo:

copy( $_FILES['archivo_txt']['name'], "tmp/" );  //estom es correcto

copy( $_FILES['archivo_txt']['name'], "tmp\" )  //esto es incorrecto y no deja ni visualizar la hoja


Por eso aparece asi como C:\dire\ccio\on\del\path/archivo (espero y me haya explicado xD !!!....

byee

Diabliyo

Cita de: SeniorX en  7 Enero 2007, 00:59 AM
Lo principal de tu problema es:
CitarPermission denied in c:\inetpub\wwwroot\jorge\fotos\loader_files.php

Tienes que darle los permisos correspondientes a loader_files.php.

Hola:

Como modifico estos permisos ????... ya sea del ARCHIVO PHP o de la CARPETA ???....

Recuerden que estoy en Windows y pues ya intente con: Click Derecho y Propiedades, deje libre para escritura y lectura (ya que solo aparece 2 casilla :P).... Pero aun NO puedo hacer: copy() :(....

Sera que NO habra solucion a este problema ???... porke he buscado en GOOGLE y siempre contestan lo mimo: PERMISOS... Y me consta que SI SON LOS PERMISOS, ya que mi codigo jala en mi LAPTOP (tiene Slackware Linux), pero el codigo debe funcionar forzosamente en Windows (cosas del trabajo :( )....

Espero y me puedan ayudar, ya que la estupida shell de Windows no acepta:

shell C:> chmod -R 0755 carpeta_de_los_php/
shell C:>chmod 0755 *.php


jijijijiji xD ;D

bye bye

Ertai

Intenta crear un archivo en la carpeta.

Así sabrás si son permisos o no.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Diabliyo

#6
Cita de: Ertai en  9 Enero 2007, 23:25 PM
Intenta crear un archivo en la carpeta.

Así sabrás si son permisos o no.

Pues si son permisos :S :(.... Este es el error:

Warning: mkdir(angel) [function.mkdir]: Permission denied in c:\inetpub\wwwroot\tmp.php on line 22

Warning: chdir() [function.chdir]: No such file or directory (errno 2) in c:\inetpub\wwwroot\tmp.php on line 24

Ertai

Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Ertai

Mira como saber los permisos que tienes sobre la carpeta en Win.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Diabliyo

#9
Hola:

Listo problema resuelto, solo cambie permisos desde la consola de windows.

Para cambair los permisos en archivos o carpetas en WINDOWS, es necesario saber los USUARIOS que son/estan en el sistema, y el permiso que le daremos, por ejemplo:

C:\> cacls [archivo/carpeta] [/P USER:PERMISO USER:PERMISO USER:PERMISO]

Donde:
USER (Estos son algunos usuarios):
-Diabliyo
-Administrator
-Administrators
-Users
-SYSTEM
-IUSR_ELITE-LAPTOP
-IWAM_ELITE-LAPTOP
-none

PERMISO (Estos son algunos permisos):
F -> Full Control
R -> Read
W -> Write
C -> Change (Write)

Ejemplo en Consola:

C:\> cacls archivo /P Diabliyo:F Administrator:F Administrators:F Users:F SYSTEM:F IUSR_ELITE-LAPTOP:F IWAM_ELITE-LAPTOP:F none:F

C:\> cacls carpeta /P Diabliyo:F Administrator:F Administrators:F Users:F SYSTEM:F IUSR_ELITE-LAPTOP:F IWAM_ELITE-LAPTOP:F none:F



NOTA:
Deficientemente e ignorantemente, si cambias los permisos de una carpeta, los permisos solo cambiaran en la carpeta, y NO cambiaran en sus archivos dentro. Asi que habra que hacerle el cambio a cada archivo manualmente, o bien el tipico: *.extension (pero asi cambiariamos TODOS)

Asi que, Bendito sea: shell# chmod -R 0755 carpeta  (ya que en linux si se cambian a su ves los archivos xD).

Bueno con eso ya funciona COPY() y deja de tirar errores !!

Gracias a todos !!

bye bye