Código PHP:
if (copy ($imagen,"/httpdocs/imagenes/anuncios/" . $imagen_name)) {echo "Imagen copiada";}
| ||||
Script de upload Hola, estoy haciendo un script para subir imagenes, he creado la siguiente línea de código pero al mirar por ftp no encuentro el archivo, en mi pc funciona, así que supongo que es la dirección a la q la envio, Alguna sugerencia? Código PHP:
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| |||
Deberías usar la función move_uploaded_file() en lugar de copy() .. a su vez .. en dicha función .. el parámetro que indica la ruta de la imagen origen (que es donde PHP la sube temporalmente al servidor para que luego la muevas a su destino definitivo con el nombre que ha de quedar en destino ...) es: if (copy ($imagen_tmp,"/httpdocs/imagenes/anuncios/" . $imagen_name)) ó mejor: Código PHP: /httpdocs/imagenes/anuncios ese "httpdocs" tal vez sea desde el "raiz" de tu sito (lo que ves al entrar por FTP) pero no es el tu "ruta" completa desde el raiz de ese servidor seguramente .. Lo más simple es como te muestro en el ejemplo .. A su vez .. ese directorio de destino tendrá que tener los permisos de escritura correspondientes (en tun FTP cliente .. usa CHMOD y defina un permiso tipo 0666 o incluso 0777 según corresponda) Un saludo, |
| ||||
sigue sin funcionarme, una pregunta, al subirlo desde el formulario no debería aparecerme en la carpeta 'tmp'? Es que ya no me aparece en ese carpeta.
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| |||
Exactamente debería aparecer con un nombre "aletatorio" que PHP le otorga a tu archivo en el directorio que tengas configurado para: upload_tmp_dir de tu php.ini (lo puedes ver en tu phpinfo() ) aunque diga "tmp" no ha de ser el "tmp" directorio que puedas tener bajo tu sitio creado en tu servidor.. Los servicios de hosting "compartidos" .. ese "tmp" es común /tmp (se refiere al raiz de ese servidor y sistema de archivos). El "upload" en sí puede estar deshabilitado también en vários puntos .. por eso te comento que debes usar la función move_upload_file() para evitar problemas como los que plantea copy() si usas por ejemplo "safe_mode" en PHP (que es altamente restrictivo). Un saludo, PD: usas un servicio de hosting de pago o gratuito donde no te funciona? .. tienes el control sobre ese servidor? ... |
| ||||
Le eché un vistazo al php.ini y tiene dos lineas repetidas upload_tmp_dir = upload_tmp_dir = /temp; es normal? puede ser por eso? Cluster, te debo mil cañas!
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| |||
Debería tener sólo una .. (sin un ; delante). Lo que no comentas es que Sistema Operativo usas en ese servidor (el que dices que has visto ese php.ini). En "windows" no existe un /tmp .. sino que algo tipo c:\nose .. El caso es que ese directorio sea como sea tiene que estar creado y con permisos de ejecución. Pese que PHP dice que si no tienen ninguno definido usará el "temporal del sistema" (un /tmp en linux normalmente o un c:/windows/system o por ahí en un windows). Un saludo, |
| ||||
El sistema es Linux bajo Plesk, debería borrar esa linea y reiniciar?
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| |||
Ya te lo comenté antes .. borra esa línea repetida (por seguridad) .. quedate con la de /tmp y asegurate que tengas creado ese directorio, dale permisos de escritura, guarda tu php.ini y reinicia tu servicio HTTP al menos ... Esto no asegura que todo "funcione" .. pero ya es un paso menos que ir revisando. Por cierto .. que tamaño de archivo pretendes subir? .. Te lo comento por qué PHP (en su php.ini) como incluso Apache tienen sus limitaciones .. así que prueba con archivos de unos pocos Kbytes y si todo funciona bien .. ahí empiezas a subir o a revisar las limitaciones de PHP y Apache. Un saludo, |
| ||||
He probado con otro código, y me dio el siguiente: Warning: copy(): open_basedir restriction in effect. File(/imagenes/anuncios/PHTO0006.JPG) is not within the allowed path(s): (/home/httpd/vhosts/xpalabras.com/httpdocs:/tmp)
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| ||||
Tema soluciona, mil gracias Cluster Lo solucioné con Código PHP:
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| ||||
Con el script anterior el nombre de la imagen que sube es el que da el usuario del sistema, a mí lo que me gustaría es utilizar la terminación del archivo que sube pero como nombre un mysql_insert_id, cómo puedo hacer?
__________________ Hospedaxes (Coruña) - Desarrollo, diseño y hosting web |
| |||
El segundo parámetro de copy() (insisto que deberías usar move_uploaded_file() en lugar de copy()) define el nombre que va a quedar en destino y la ruta si la indicas (si no lo indicas caerá el archivo en el mismo directorio que tienes tu script PHP que lo ejecuta). Sabiendo eso puedes hacer cosas como: Código PHP: |