2012-01-09 12 views
6

estoy trabajando en un programa de línea de comandos en PHP y estoy teniendo problemas, mi primer problema es cuando llamo PHP de mkdir() es que me da este errorde PHP en Windows

Warning: mkdir(): No such file or directory in 
E:\Server\_ImageOptimize\OptimizeImage.php 
on line 196 

luego leí en el documento PHP, un comentario del usuario que dice que la barra diagonal / no funciona con este método en Windows, sino en Unix.

Así que luego cambié mi código para cambiarlos a barras invertidas, pero no me cambió nada, todavía tengo el mismo error en la misma línea.

Aquí es el código de abajo puede alguien ayudarme a resolver esto por favor

// I tried both of these below 
$tmp_path = '\tmp\e0bf7d6'; 
//$tmp_path = '/tmp/e0bf7d6'; 

echo $tmp_path; 

mkdir($tmp_path); 
+1

no se puede acceder a la carpeta 'tmp' a través de PHP. ¿necesita utilizar 'move_uploaded_files()' – diEcho

+0

¿Ha intentado utilizar getcwd() para ver desde dónde se está ejecutando el script? Además, el tercer parámetro de la función permite la creación recursiva. Entonces, si el directorio que está tratando de crear tiene un directorio principal que no existe (aún), se creará en lugar de generar un error. –

+0

Pruebe '[\\]' en vez de '[\]'. Quizás corrija su problema. – MahanGM

Respuesta

8

El problema real es que mkdir() sólo crea un subdirectorio por llamada, pero se la pasó un camino de dos directorios inexistente. Que normalmente tendría que hacer este paso a paso:

mkdir("/tmp"); 
mkdir("/tmp/e0b093u209"); 
mkdir("/tmp/e0b093u209/thirddir"); 

O utilice el tercer método abreviado de parámetros:

mkdir("/tmp/e0b093u209", 0777, TRUE); 
+0

Gracias, esto me estaba volviendo loco, gracias, gracias – CodeDevelopr

+0

Tristemente, ya estoy usando el segundo y tercer argumento y todavía dice 'no hay tal archivo o directorio' –

3

que normalmente utiliza la siguiente línea como una constante y me puso en un archivo mundial para ser utilizado a través de mis sitios.

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

Eso debería solucionar el problema del separador. También probaría la propiedad recursiva encontrada en mkdir que te permitirá hacer la estructura anidada. Por favor, vea la siguiente, http://php.net/manual/en/function.mkdir.php

Notará que necesita llamar a mkdir como se muestra a continuación.

mkdir ($path, $mode, true)