corro il seguente codice:Perché l'mkdir fallisce con l'opzione ricorsiva impostata su true?
mkdir('mnt/1',0777,true);
mkdir('mnt/a',0777);
Directory "a" viene creato, mentre directory "1" non è, stampe pagina di avviso.
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3
Ho piena autorizzazioni sulla directory mnt per apache utente esegue: versione
drwxr-xr-x 1 bitrix bitrix 4096 Nov 28 10:10 mnt
PHP - PHP 5.3.3. Apache versione 2.2.15.
Qualche idea, perché l'mkdir fallisce con l'opzione ricorsiva impostata su true?
Aggiornamento ! Beh ho cancellato la cartella, ha fatto il seguente script in php e corse di nuovo:
<?php
error_reporting(E_ALL);
mkdir('mnt/1',0777,true);
mkdir('mnt/2/',0777,true);
mkdir('./mnt/3',0777,true);
mkdir('./mnt/4/',0777,true);
mkdir('mnt/a',0777);
mkdir('mnt/b/',0777);
mkdir('./mnt/c',0777);
mkdir('./mnt/d/',0777);
?>
Ecco l'output:
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 4
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 5
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 6
Ecco il contenuto della mnt cartella dopo l'esecuzione dello script:
drwxr-xr-x 1 bitrix bitrix 4096 Nov 28 2012 .
drwxrwx--- 11 bitrix bitrix 12288 Nov 28 11:10 ..
drwxr-xr-x 1 bitrix bitrix 0 Nov 28 2012 a
drwxr-xr-x 1 bitrix bitrix 0 Nov 28 2012 b
drwxr-xr-x 1 bitrix bitrix 0 Nov 28 2012 c
drwxr-xr-x 1 bitrix bitrix 0 Nov 28 2012 d
ho anche provato percorso assoluto per mkdir ricorsiva - ancora senza fortuna, mentre mkdir non ricorsiva funziona bene non importa quanto il percorso è impostato. Cosa c'è di sbagliato con mkdir ricorsivo? Non ho ancora idee ..
Aggiornamento! Ulteriori indagini hanno rivelato che queste cose accadono perché mnt è una cartella, montato da comando
mount -t cifs -o username=***user***,password=***password***,uid=bitrix,gid=bitrix,iocharset=utf8,codepage=866 //192.168.1.6/folder /home/bitrix/www/mnt
In tutte le altre directory mkdir ricorsiva funziona bene, mentre in quella directory opere mkdir unico non-ricorsive!
Aggiornamento ! As femtoRgon assunto mkdir, quando eseguito da script nella cartella mnt
, funziona bene sia ricorsivo che non ricorsivo. Ma ancora non riesco a capire, perché non riesce, quando viene eseguito da/home/bitrix/www? Ho anche provato a montare con le opzioni file_mode=0775,dir_mode=0775
- senza fortuna. Il mio sistema operativo = CentOS 6.3, se è importante.
Avete già una directory '1' in' mnt'? – Arjan
No. Le directory "a" e "1" non esistono prima dell'esecuzione dello script –
Qual è il proprietario/gruppo e le autorizzazioni della directory "a" una volta creata? Un'altra idea è che la chiamata ricorsiva * potrebbe * provare a cambiare i permessi della directory 'mnt', che l'utente di apache non possiede. – mkilmanas