Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie katalogów...
Forum PHP.pl > Forum > PHP
ksenonlogin
Mam dziwny problem z tworzeniem katalogów na systemie Centos 6, chodzi dokładnie o to, że jak tworzę katalog za pomocą skryptu php (chcąc nadać prawa 777), to i tak katalog pozostaje przy prawach 755. Co najgorsze, że właścicielem katalogu pozostaje apache (informacja panelu plesk). Wszystko byłoby ok gdyby nie to że nie mogę tworzyć katalogów w tych katalogach przy ponownym wywołaniu funkcji - tylko przy ponownym, bo gdy tworzę za jednym zamachem całość katalogi i podkatalogi to struktura zostaje utworzona, ale potem w tych folderach nic nie zrobię, a co najgorsze to nie mogę usunąć tych katalogów nawet za pomocą plesk-a który wywala mi błąd.


Proszę o wszelkie wskazówki które mogą wyjaśnić ten problem.


  1. $cfg['dir_name'] = $id_returned;
  2. $cfg['file_name'] = 'index.html';
  3. $cfg['destination_directory'] = 'users';
  4.  
  5. if (mkdir( './' . $cfg['destination_directory'] . '/' . $cfg['dir_name'], 0777)) {
  6.  
  7.  
  8. $cfg['stan'] = 'success';
  9.  
  10. } else {
  11. $cfg['stan'] = 'error';
  12. }
  13.  
  14. if (mkdir( './' . $cfg['destination_directory'] . '/' . $cfg['dir_name'].'/ad', 0777)) {
  15.  
  16.  
  17. $cfg['stan'] = 'success';
  18.  
  19. } else {
  20. $cfg['stan'] = 'error';
  21. }
Adi32
Nic nie możesz z nimi zrobić bo tylko apache ma do nich prawa. Miałem podobny problem, napisałem do administracji serwera i pomogli.
ksenonlogin
No tak, jednak ja posiadam serwer dedykowany i administratorem jestem sobie sam, dodatkowo coś jest nie tak, ponieważ jak tworzę katalogi za pomocą plask-a to katalogi przyjmują użytkownika zalogowanego a nie apacha, więc da się to zrobić, tylko jak - przecież plesk wykorzystuje PHP. I dlaczego katalogów nie mogę usunąć nawet za pomocą ftp czy plesk-a (wywala mi błąd)?
Adi32
Na tyle to ja się na tym nie znam ale kiedy na tym forum pisałem z takim problemem to doradzono mi właśnie kontakt z administracją.
Nie wiem co oni tam dokładnie zrobili jednak chodziło o CGI.

Nie wiem, pewnie nic to nie mówi ale wyjaśnili mi problem w ten sposób:

Cytat
Witam,

tutaj niestety problem jest w PHP 5.4 który był aktualizowany z wersji 5.2.x. Wersja ta była przez cały czas uruchomiona jako modułu apache, więc i każde polecenie PHP jest w tej wersji uruchomiane na użytkowniku apache, nie jako CGI, który umożliwia wykonanie PHP w prawach użytkownika, który jest w posiadaniu skryptu.
Nie ma możliwości zmienić domyślnego PHP z modułu Apache na parser CGI, gdyż wszystkie Pana strony przestały by działać w sposób poprawny ze względu na wymuszenia ustawień PHP jakie widnieją w pliku .htaccess i praw dostępu ustawionych na poszczególnych katalogach 777 są zbyt wysokie dla CGI.

Rozwiązaniem jest na skryptach które wgrywają włączenie lokalnego PHP 5.2.17, który został dodany jako drugi PHP w wersji CGI (by nie było konfliktu z domyślną wersją PHP na serwerze), poprzez wrzucenie w katalog pliku .htaccess z wpisem:
<FilesMatch "\.php$">
AddHandler x-httpd-php52 .php
</FilesMatch>


Mimo tego zaraz naprawili problem.
!*!
Zacznijmy od tego że tak ma być. Wszystko co stworzysz przez PHP, ma właściciela apache/www-data i tylko on ma prawa do manipulowania danymi. Próbowałeś zmienić chmod przy tworzeniu?
ksenonlogin
Wielkie dzięki za nakierowanie na te cgi - wyłączyłem na serwerze i tworzy katalogi normalnie, jednak pozostaje problem z osuwaniem katalogów - nawet plesk sobie z tym nie radzi ;/

Komunikat plesk-a
Error: Unable to remove file //httpdocs//var/www/vhosts/wakacyjnyserwis.pl//httpdocs/users: filemng: Error occurred during /bin/rm command.
!*!
Co to jest w zasadzie ten cały plesk? I czy jakieś komunikaty masz w php jak użyjesz:

  1. rmdir('katalog');
  2. // lub dla pliku
  3. unlink('plik');


Sprawdź jaki jest chmod i właściciel.
ksenonlogin
OK, już sobie poradziłem w taki sposób, że jak katalogi tworzę za pomocą php to i usuwam za pomocą php, po prostu chodzi o to że jak tworzę katalogi przez skrypt php to nie mogę usuwać ich przez managera ftp czy inne aplikacje wykorzystujące uprawnienia inne niż apache.

A co do Plesk-a, to jest to interfejs/aplikacja pozwalający zażądać serwerami dedykowanymi oraz wirtualnymi (jest instalowana na systemach Debian, Centos i inne)


  1. <?php
  2. function removeDir($path) {
  3. $dir = new DirectoryIterator($path);
  4. foreach ($dir as $fileinfo) {
  5. if ($fileinfo->isFile() || $fileinfo->isLink()) {
  6. unlink($fileinfo->getPathName());
  7. } elseif (!$fileinfo->isDot() && $fileinfo->isDir()) {
  8. removeDir($fileinfo->getPathName());
  9. }
  10. }
  11. rmdir($path);
  12. }
  13.  
  14. $katalog = 'users';
  15. removeDir($katalog);
  16. echo 'test';
  17. ?>
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.