2012-01-09 16 views
6

Sto lavorando su un programma a riga di comando in PHP e sto avendo dei problemi, il mio primo problema è quando chiamo PHP di mkdir() mi sta dando questo erroredi PHP su Windows

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

Ho poi letto nei documenti PHP un commento utente che diceva che la barra diretta / non funziona con questo metodo in Windows ma su Unix.

Quindi ho cambiato il mio codice per cambiarlo in backslash ma non ha cambiato nulla per me, ho ancora ottenuto lo stesso errore sulla stessa linea.

Ecco il codice qui sotto qualcuno può aiutarmi a capire questo fuori si prega di

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

echo $tmp_path; 

mkdir($tmp_path); 
+1

non è possibile accedere alla cartella 'tmp' tramite PHP. hai bisogno di usare 'move_uploaded_files()' – diEcho

+0

Hai provato a usare getcwd() per vedere da dove viene eseguito lo script? Inoltre, il terzo parametro della funzione consente la creazione ricorsiva. Quindi se la directory che stai cercando di creare ha una directory genitore che non esiste (ancora) verrà creata invece di generare un errore. –

+0

Prova '[\\]' invece '[\]'. Forse correggerai il tuo problema. – MahanGM

risposta

8

Il problema reale è che mkdir() crea solo una sottodirectory per ogni chiamata, ma si passò un percorso di due directory inesistente. Che normalmente hanno a che fare questo passo per passo:

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

Oppure utilizzare il terzo collegamento parametri:

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

Grazie, questo mi stava facendo impazzire, grazie grazie – CodeDevelopr

+0

Purtroppo sto già usando il 2 ° e il 3 ° argomento e continua a dire 'no tale file o directory ' –

3

Io di solito uso la seguente riga come una costante e ho messo in un file globale per essere usato attraverso i miei siti.

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

Questo dovrebbe risolvere il problema del separatore. Vorrei anche provare la proprietà ricorsiva trovata in mkdir che ti permetterà di costruire la struttura annidata. Si prega di vedere il foillowing, http://php.net/manual/en/function.mkdir.php

Si noterà che è necessario chiamare mkdir come di seguito.

mkdir ($path, $mode, true)