Skocz do zawartości
Zaloguj się, aby obserwować  
Dawid Pietrzak

[PHP] Kopiowanie plików na serwerze

Polecane posty

Cześć, tworzę mały projekt. Muszę przekopiować duże ilości plików za pomocą PHP. Do małej ilości plików używam tego:

file_put_contents($nazwa,file_get_contents($sciezka));

Jednak do przekopiowania mam bardzo dużą ilość plików (~100), i nie mam siły do pisania tego 100 razy z ścieżkami. Fopeny, fgetsy i inne są zablokowane. Mam dostęp do shella, więc próbowałem to zrobić przez shell_exec ale dalej też zablokowane. Zna ktoś sposób?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Readdir tez nie dziala?

Nie dziala, permissions denied.

Warning: opendir() [function.opendir]: SAFE MODE Restriction in effect. The script whose uid/gid is 3307/1009 is not allowed to access / owned by uid/gid 0/0 in /homex/ca1ek/public_html/test.php on line 3
Warning: opendir(/lol/) [function.opendir]: failed to open dir: Permission denied in /homex/ca1ek/public_html/test.php on line 3
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 4
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 5
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 6
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 7
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 8
Warning: readdir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 9
Warning: closedir() expects parameter 1 to be resource, boolean given in /homex/ca1ek/public_html/test.php on line 10

 

edit: Przy okazji, są foldery w folderze.

Edytowano przez Dawid Pietrzak (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyłącz safe_mode jeśli masz możliwość.

Ewentualnie nadaj uprawnienia dla odpowiedniego usera do wykonania skryptu. W innym wypadku safe_mode będzie blokować.

 

Warning: opendir(/lol/) [function.opendir]: failed to open dir: Permission denied in /homex/ca1ek/public_html/test.php on line 3

 

Nic dziwnego, skoro próbujesz się odwołać do takiego katalogu. Może powinno być /homex/ca1ek/public_html/lol/ ?

Edytowano przez Tajgeer (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyłącz safe_mode jeśli masz możliwość.

Ewentualnie nadaj uprawnienia dla odpowiedniego usera do wykonania skryptu. W innym wypadku safe_mode będzie blokować.

 

 

 

Nic dziwnego, skoro próbujesz się odwołać do takiego katalogu. Może powinno być /homex/ca1ek/public_html/lol/ ?

 

 

Prawda, zadziałało jak dałem pełną ścieżkę do pliku, ciekawe czemu pokazało safe mode.

 

Zastanawiam się jak zmiksować readdir z file_put_contents, bo readdir nie pokazuje co jest katalogiem a co plikiem.

Edytowano przez Dawid Pietrzak (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ciekawe czemu pokazało safe mode.

Dlatego

SAFE MODE Restriction in effect. The script whose uid/gid is 3307/1009 is not allowed to access / owned by uid/gid 0/0

 

Zastanawiam się jak zmiksować readdir z file_put_contents, bo readdir nie pokazuje co jest katalogiem a co plikiem.

 

Sprawdzasz to funkcją is_dir

W dokumentacji http://php.net/manua...ion.readdir.php w komentarzach masz całą masę przykładów rekursywnych funkcji listujących pliki i pliki z podkatalogów.

 

A przy okazji dlaczego nie stosujesz funkcji copy http://php.net/manual/en/function.copy.php do kopiowania tylko wynalazek file_put_contents i file_get_contents przez co czytasz do skryptu zawartość pliku i ją zapisujesz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dlatego

 

 

 

 

Sprawdzasz to funkcją is_dir

W dokumentacji http://php.net/manua...ion.readdir.php w komentarzach masz całą masę przykładów rekursywnych funkcji listujących pliki i pliki z podkatalogów.

 

A przy okazji dlaczego nie stosujesz funkcji copy http://php.net/manua...nction.copy.php do kopiowania tylko wynalazek file_put_contents i file_get_contents przez co czytasz do skryptu zawartość pliku i ją zapisujesz?

 

Nie wiedziałem o copy, dzięki za pomoc.

 

Edit: copy też zablokowane.

Edytowano przez Dawid Pietrzak (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sporo tych funkcji masz zablokowane i trzeba przyznać, że takie dość podstawowe. Co to za hosting, nie ma tam możliwości własnego php.ini i ich odblokować lub poprosić adminów o odblokowanie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Copy zablokowane, czy może znowu brak uprawnień? Bo to jest rożnica...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Copy zablokowane, czy może znowu brak uprawnień? Bo to jest rożnica...

 

Znowu pomyłka, jak chcę cos przekopiowac z podkatalogu, wali błędem, a jak z tego samego folderu co skrypt działa. Już chyba wiem jak to napisać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wychodzi na to, że problemem nie są zablokowane funkcje, tylko złe ich stosowanie (używanie bezwzględnych ścieżek zaczynających się od /).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jakie sciezki podajesz, relatywne czy absolutne?

 

hdchg czy sjhdh? Ja newbie i nie wiem

 

Chyba chodzi o ./blabla czy /blabla? Próbowałem obu, permissions denied a w kliencie ftp ustawilem wszystko na 777

 

BTW nie mialem pomyslu jak to zrobic wiec copy zrobilem z sciezka do kazdego pliku. Ale ręce bolą.

 

Kod:

$nick = 'test';
//kopiowanie
copy('./bot/index.php','./'.$nick.'/index.php');
copy('./bot/bot/class../bot.php','./'.$nick.'/bot/class../bot.php');
copy('./bot/bot/class.Browser.php','./'.$nick.'/bot/class.Browser.php');
copy('./bot/bot/class.CaptchaBreaker.php','./'.$nick.'/bot/class.CaptchaBreaker.php');
copy('./bot/bot/class.Util.php','./'.$nick.'/bot/class.Util.php');
copy('./bot/bot/simple_html_dom.php','./'.$nick.'/bot/simple_html_dom.php');
 copy('./bot/bot/configuration/class.DBConfig.php','./'.$nick.'/bot/configuration/simple_html_dom.php');
 copy('./bot/bot/configuration/class.XMLFileConfig.php','./'.$nick.'/bot/configuration/class.XMLFileConfig.php');
 copy('./bot/bot/configuration/interface.Configuration.php','./'.$nick.'/bot/configuration/interface.Configuration.php');

 copy('./bot/bot/logging/class.EchoAppender.php','./'.$nick.'/bot/logging/class.EchoAppender.php');
 copy('./bot/bot/logging/class.FileAppender.php','./'.$nick.'/bot/logging/class.FileAppender.php');
 copy('./bot/bot/logging/class.Logger.php','./'.$nick.'/bot/logging/class.Logger.php');
 copy('./bot/bot/logging/class.LogLevel.php','./'.$nick.'/bot/logging/class.LogLevel.php');
 copy('./bot/bot/logging/interface.Appender.php','./'.$nick.'/bot/logging/interface.Appender.php');
copy('./bot/bot/configs/.htaccess','./'.$nick.'/bot/bot/configs/.htaccess');
//copy('./bot/bot/configs/example_settings.xml','./'.$nick.'/bot/bot/configs/example_settings.xml');
copy('./bot/bot/configs/index.html','./'.$nick.'/bot/bot/configs/index.html');

copy('./bot/logs/hh_my_username.log','./'.$nick.'/bot/logs/hh_my_username.log');

copy('./bot/matrixes/matrix_2.gif','./'.$nick.'/bot/matrixes/matrix_2.gif');
copy('./bot/matrixes/matrix_4.gif','./'.$nick.'/bot/matrixes/matrix_4.gif');
copy('./bot/matrixes/matrix_5.gif','./'.$nick.'/bot/matrixes/matrix_5.gif');
copy('./bot/matrixes/matrix_6.gif','./'.$nick.'/bot/matrixes/matrix_6.gif');
copy('./bot/matrixes/matrix_7.gif','./'.$nick.'/bot/matrixes/matrix_7.gif');
copy('./bot/matrixes/matrix_8.gif','./'.$nick.'/bot/matrixes/matrix_8.gif');
copy('./bot/matrixes/matrix_9.gif','./'.$nick.'/bot/matrixes/matrix_9.gif');

copy('./bot/tmp/.htaccess','./'.$nick.'/bot/tmp/.htaccess');

copy('./bot/useragents/CHROME_WINXP.properties','./'.$nick.'/bot/useragents/CHROME_WINXP.properties');
copy('./bot/useragents/CHROMIUM_LINUX.properties','./'.$nick.'/bot/useragents/CHROMIUM_LINUX.properties');
copy('./bot/useragents/EPIPHANY_LINUX.properties','./'.$nick.'/bot/useragents/EPIPHANY_LINUX.properties');
copy('./bot/useragents/FF_LINUX.properties','./'.$nick.'/bot/useragents/FF_LINUX.properties');
copy('./bot/useragents/FF_WINXP.properties','./'.$nick.'/bot/useragents/FF_WINXP.properties');
copy('./bot/useragents/IE_WIN7.properties','./'.$nick.'/bot/useragents/IE_WIN7.properties');
copy('./bot/useragents/IE8_WINXP.properties','./'.$nick.'/bot/useragents/IE8_WINXP.properties');
copy('./bot/useragents/MIDORI_LINUX.properties','./'.$nick.'/bot/useragents/MIDORI_LINUX.properties');
copy('./bot/useragents/FF_WIN7.properties','./'.$nick.'/bot/useragents/FF_WIN7.properties');
copy('./bot/useragents/OPERA_WINXP.properties','./'.$nick.'/bot/useragents/OPERA_WINXP.properties');

 

nie dziala

Edytowano przez Dawid Pietrzak (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czyli np.

/homex/ca1ek/public_html/bot/index.php

 

itd.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pozamieniałem, kod wygląda tak:

<?php
$nick = 'test';
//kopiowanie
copy('/homex/ca1ek/public_html/bot/index.php','/homex/ca1ek/public_html/'.$nick.'/index.php');
copy('/homex/ca1ek/public_html/bot/bot/class.Bot.php','/homex/ca1ek/public_html/'.$nick.'/bot/class../bot.php');
copy('/homex/ca1ek/public_html/bot/bot/class.Browser.php','/homex/ca1ek/public_html/'.$nick.'/bot/class.Browser.php');
copy('/homex/ca1ek/public_html/bot/bot/class.CaptchaBreaker.php','/homex/ca1ek/public_html/'.$nick.'/bot/class.CaptchaBreaker.php');
copy('/homex/ca1ek/public_html/bot/bot/class.Util.php','/homex/ca1ek/public_html/'.$nick.'/bot/class.Util.php');
copy('/homex/ca1ek/public_html/bot/bot/simple_html_dom.php','/homex/ca1ek/public_html/'.$nick.'/bot/simple_html_dom.php');
 copy('/homex/ca1ek/public_html/bot/bot/configuration/class.DBConfig.php','/homex/ca1ek/public_html/'.$nick.'/bot/configuration/simple_html_dom.php');
 copy('/homex/ca1ek/public_html/bot/bot/configuration/class.XMLFileConfig.php','/homex/ca1ek/public_html/'.$nick.'/bot/configuration/class.XMLFileConfig.php');
 copy('/homex/ca1ek/public_html/bot/bot/configuration/interface.Configuration.php','/homex/ca1ek/public_html/'.$nick.'/bot/configuration/interface.Configuration.php');

 copy('/homex/ca1ek/public_html/bot/bot/logging/class.EchoAppender.php','/homex/ca1ek/public_html/'.$nick.'/bot/logging/class.EchoAppender.php');
 copy('/homex/ca1ek/public_html/bot/bot/logging/class.FileAppender.php','/homex/ca1ek/public_html/'.$nick.'/bot/logging/class.FileAppender.php');
 copy('/homex/ca1ek/public_html/bot/bot/logging/class.Logger.php','/homex/ca1ek/public_html/'.$nick.'/bot/logging/class.Logger.php');
 copy('/homex/ca1ek/public_html/bot/bot/logging/class.LogLevel.php','/homex/ca1ek/public_html/'.$nick.'/bot/logging/class.LogLevel.php');
 copy('/homex/ca1ek/public_html/bot/bot/logging/interface.Appender.php','/homex/ca1ek/public_html/'.$nick.'/bot/logging/interface.Appender.php');
copy('/homex/ca1ek/public_html/bot/bot/configs/.htaccess','/homex/ca1ek/public_html/'.$nick.'/bot/configs/.htaccess');
//copy('/homex/ca1ek/public_html/bot/bot/configs/example_settings.xml','/homex/ca1ek/public_html/'.$nick.'/bot/configs/example_settings.xml');
copy('/homex/ca1ek/public_html/bot/bot/configs/index.html','/homex/ca1ek/public_html/'.$nick.'/bot/configs/index.html');

copy('/homex/ca1ek/public_html/bot/logs/hh_my_username.log','/homex/ca1ek/public_html/'.$nick.'/logs/hh_my_username.log');

copy('/homex/ca1ek/public_html/bot/matrixes/matrix_2.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_2.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_4.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_4.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_5.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_5.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_6.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_6.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_7.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_7.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_8.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_8.gif');
copy('/homex/ca1ek/public_html/bot/matrixes/matrix_9.gif','/homex/ca1ek/public_html/'.$nick.'/matrixes/matrix_9.gif');

copy('/homex/ca1ek/public_html/bot/tmp/.htaccess','/homex/ca1ek/public_html/'.$nick.'/tmp/.htaccess');

copy('/homex/ca1ek/public_html/bot/useragents/CHROME_WINXP.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/CHROME_WINXP.properties');
copy('/homex/ca1ek/public_html/bot/useragents/CHROMIUM_LINUX.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/CHROMIUM_LINUX.properties');
copy('/homex/ca1ek/public_html/bot/useragents/EPIPHANY_LINUX.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/EPIPHANY_LINUX.properties');
copy('/homex/ca1ek/public_html/bot/useragents/FF_LINUX.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/FF_LINUX.properties');
copy('/homex/ca1ek/public_html/bot/useragents/FF_WINXP.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/FF_WINXP.properties');
copy('/homex/ca1ek/public_html/bot/useragents/IE_WIN7.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/IE_WIN7.properties');
copy('/homex/ca1ek/public_html/bot/useragents/IE8_WINXP.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/IE8_WINXP.properties');
copy('/homex/ca1ek/public_html/bot/useragents/MIDORI_LINUX.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/MIDORI_LINUX.properties');
copy('/homex/ca1ek/public_html/bot/useragents/FF_WIN7.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/FF_WIN7.properties');
copy('/homex/ca1ek/public_html/bot/useragents/OPERA_WINXP.properties','/homex/ca1ek/public_html/'.$nick.'/useragents/OPERA_WINXP.properties');

 ?>

 

Ale wychodzą takie błędy http://pastebin.com/ufMqGLkw

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może dlatego, że w większości cywilizowanych systemów katalogi domowe są w /home/ a nie /homex/ ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A, faktycznie, nie zauważyłem.

Tak analizując ten kod dokładniej, to wypadało by jakoś utworzyć katalog, do którego się chce kopiować.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A, faktycznie, nie zauważyłem.

Tak analizując ten kod dokładniej, to wypadało by jakoś utworzyć katalog, do którego się chce kopiować.

 

Testowałem, nie działa niezależnie czy jest katalog, nie ma katalogu, czy jest katalog z chmodem 777.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Myślę, że to najwyższy czas żebyś komuś to zlecił bo wozisz się z tym już sporo czasu a efektów nie widać a podstawowej wiedzy Ci brakuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×