Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]mkdir mapowany dysk
Forum PHP.pl > Forum > Przedszkole
inespew
Witam

Chciałbym utworzyć katalog na dysku który jest podmapowany np. Skrypt odpalam na kompie A i do niego jest podmapowany dysk z komputera B jako Z:\.

Niżej moje próby które nie zadziałały:

  1. <?php
  2. echo shell_exec('mkdir \\nazwa_komputera_B\katalog_mapowany\katalog_tworzony');
  3. ?>


  1. <?php
  2. echo shell_exec('mkdir Z:\katalog_tworzony');
  3. ?>


  1. <?php
  2. mkdir ("Z:\katalog_tworzony");
  3. ?>


  1. <?php
  2. mkdir ("\\nazwa_komputera_B\katalog_mapowany\katalog_tworzony");
  3. ?>


Może ktoś miał taki problem i znalazł rozwiązanie?

Pozdraiwam
thek
Ale przecież mapowanie możesz robić tylko na własnym kompie. Ty na serwerze możesz jedynie utworzyć katalog. mapowanie klient musi zrobić we własnym zakresie. Wyobrażasz sobie co by było, gdyby strona tworzyła sobie katalog na serwerze i usera zmuszała do zmapowania go jako C: ? Pomyślałeś o tym? smile.gif

Jeśli dobrze rozumiem, to rozwiązanie o którym piszesz zapewne podchodzi pod linkowanie do katalogu.
inespew
To będzie chodziło tylko lokalnie. Chcę aby skrypt uruchamiany z komputera A tworzył katalog na komputerze B, który udostępnia katalog lub partycję w sieci lokalnej i jest podmapowany na komputerze A np jako Z:\
thek
Popatrz co by musiał skrypt zrobić:
1) Przejść do kompa innego usera( pytanie czy Ci na to pozwoli )
2) Założyć na kompie tego usera katalog
3) Założyć link na ten katalog.

Dla pewności więc najpierw spróbowałbym podłączyć się do mapowanego dysku, czy mam do niego dostęp. Od tego bym uzależniał czy utworzę katalog czy nie. Jeśli ok, to dopiero teraz próbuję i sprawdzam, bo mogę nie mieć uprawnień do zapisu. Jeśli się powiodło, to próbuję utworzyć link. I tu znowu mam zgryz, bo tworzenie linków jest problematyczne w windowsie, który w zależności od wersji inaczej to rozwiązuje. Tutaj funkcje php do ich tworzenia nie muszą zadziałać. Obsługa hard i symlinków tak naprawdę, mimo iż jest rzekomo od XP tak naprawdę istnieje dopiero od Visty. W XP nie idzie zrobić z tego co kojarzę symlinka i tylko hardlink działa (a może na odwrót? nie pamiętam smile.gif ). Na dodatek jest to rozwiązane kiepsko, bo usunięcie nieumiejętne go powoduje usunięcie nie samego dowiązania, ale całej zawartości kryjącej się pod dowiązaniem. Innymi słowy czyścisz katalog docelowy.
batman
Najpierw musisz odpowiedzieć na pytanie jakie są to systemy operacyjne i czy użytkownik z jakiego uruchamiany jest PHP ma prawa do zapisu w podanej lokalizacji. Po drugie - w jaki sposób uruchamiasz skrypt? W przeglądarce, czy z wiersza poleceń? No i na koniec (w sumie pytanie to powinno być na początku) - czy Ty jako użytkownik możesz tworzyć katalogi w wybranej lokalizacji?

P.S.
Wklej komunikaty błędów, które się pojawiają. A jeśli się nie pojawiają, to sprawdź w logach jakie wystąpiły błędy.
inespew
KomputerA: windows 2008 server+xampp tam jest uruchamiany skrypt.
KomputerB: windows 2003 server, tam jest dysk docelowy.

Na A podmapowany jest katalog z B. Skrypt jest uruchamiany z przeglądarki (tylko w sieci lokalnej) w momencie dodawania nowego rekordu do bazy. Z poziomu windowsa 2008 mogę robić wszystko na zmapowanym katalogu.

Udało mi się częsciowo rozwiązać problem tworząc katalog przez ftp.
batman
Prawdopodobnie problemem są ścieżki. Zrób tak:
  1. mkdir ("\\\\nazwa_komputera_B\\katalog_mapowany\\katalog_tworzony");
inespew
Tak problem był w ścieżce, dziwne, że tak to się zapisuję.

Dzieki za pomoc.
batman
Nie ma w tym nic dziwnego. Backslash postawiony przed jakimś znakiem może oznaczać wiele, np \t - tabulacjam \n - nowy wiersz, itd. Dlatego zazwyczaj znak ten należy "eskejpować", czyli dodawać przed nim kolejnego backslasha. W przypadku ścieżek Windowsa może to być nieco niewygodne. Z tego właśnie względu powinno stosować się DIRECTORY_SEPARATOR, który teoretycznie powinien rozwiązać problem.
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.