Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie katalogu
Forum PHP.pl > Forum > PHP
awariat
czy ten kod jest poprawnie napisany?

CODE
$katalog = $_POST['katalog'];
$oldumask = umask(0);


if (file_exists($katalog)) {
echo "error=file $katalog exists&end=0";
} else {
if (!mkdir($katalog, 0777, true)) {
echo "error=Couldn't create directory $katalog&end=0";
} else {

echo "error=utworzono $katalog&end=0";
}
}
umask($oldumask);
?>
Spawnm
a pokazuje jakieś błąd?
jeśli nie to znaczy że jest ok;)
webmaniak
Witam!
Chce stworzyć sobie funkcje która będzie odpowiedzialna za tworzenie katalogu. Mam taki skrypt:
  1. $old = umask(0);
  2. $rs=mkdir('folder',0777);
  3. umask($old);
  4. if( $rs )
  5. {
  6.  
  7. // print success information
  8. echo 'ok';
  9.  
  10. }else{
  11.  
  12. // print error information
  13. echo 'błąd';
  14.  
  15. }

i co ciekawe na windows działa, choć gdzieś wyczytałem że umask nie działa na windows, a na serwerze postawionym na fedora 11 nie działa. Mam do serwera pełny dostęp więc zmieniłem chmody na 777, by zobaczyć czy to dlatego. To komunikat błędu:
  1. Warning: mkdir() [function.mkdir]: Permission denied in [...]/funkcje_dokumentacja.php on line 342
  2. błąd

Co ciekawe kod wziąłem z manuala, przedstawia się on tak:
  1. function handleError() {
  2. trigger_error('MY ERROR');
  3.  
  4. /** usage sample
  5.   @handleError();
  6.   echo $php_errormsg;
  7.   */
  8. }
  9.  
  10. // detect slash/backslash nomenclature dirname
  11. $path = dirname( __FILE__ );
  12. $slash = '/';
  13.  
  14. (stristr( $path, $slash )) ? '' : $slash = '\\';
  15. define( 'BASE_DIR', $path . $slash );
  16.  
  17. $folder = time(); // folder name
  18. $dirPath = BASE_DIR . $folder; // folder path
  19.  
  20. // print results
  21. echo $slash;
  22. echo '<hr>';
  23.  
  24. $rs = @mkdir( $dirPath, 0777 );
  25. @handleError();
  26. if( $rs )
  27. {
  28.  
  29. // print success information
  30. echo 'was done!';
  31. echo '<br>folder: <a href="' . $folder . '">' . $folder . '</a>';
  32. echo '<br>dirPath: ' . $dirPath;
  33.  
  34. }else{
  35.  
  36. // print error information
  37. echo 'an error was occurred. Attempting create folder';
  38. echo '<br>dirPath: ' . $dirPath;
  39. echo '<br>php_errormsg: ' . $php_errormsg;
  40.  
  41. }

I działa zarówno na windows lokalnie jak i na serwerze. Co więc jest nie tak z tym pierwszym kodem??

Pomoże ktośquestionmark.gif
luki100011
a masz prawa zapisu ? tam gdzie tworzysz katalog ?
webmaniak
tak, tak jak napisalem dalem chmody na 777 i to poleceniem chmod -R 777 czyli do podkatalogow tez się to tyczy(z tego co wyczytałem o uprawnieniach). Oczywiście wlascicielem folderu jestem ja, chown też ustawiałem.

Ponownie zwracam się z pytaniem, wie ktoś czemu ten kod nie działa? Jakiś pomysł? Co prawda już napisałem funkcję która normalnie mi dodaje folder, co jest dowodem na to że prawa do folderów są ustawione prawidłowo. Tylko mnie ciekawi dlaczego to nie działa, może komuś innemu, może mi, kiedyś posłuży ten skrypt.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.