Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: po aktualizacji problem z funkcją copy
Forum PHP.pl > Forum > PHP
exen
Witam!

Powiem szczerze, że zgłupiałem lekko, więć postanowiłem poprosić o pomoc. Męczę temat od dwóch dni i nic.
Zaktualizowałem php do najnowszej wersji 5.2.8 i wszystko działa ładnie, prócz kilku funkcji kopiujących pliki.

Głównie chodzi o funkcję copy() - od tego się zaczęło.
Kod
                 #włączam wyświetlanie wszelkich komunikatów o błędach
                 ini_set( 'display_errors', 'On' );
                 ini_set('error_reporting', E_ALL);
                
              
                 $url='http://www.voxim.pl/gfx/news/inne/tomtom_go700.jpg';
                 $katalog="/tmp2";
                 $name=$katalog."/test.jpg";
                
                 if (copy("$url", "$name")) {
                 @chmod($name, 0664);
                 print 'Plik został dodany.'; echo $name;
                 } else {
                     print 'Nie można było dodać pliku.';
                     echo "-br-".$url;
                     echo "-br-".$name;
                 }


No i do niedawna tym powyższym prostym skryptem pobierałem sobie z wybranego miejsca zdjęcia i wrzucałem do określonego katalogu.
Po aktualizacji php ten sam skrypt generuje błąd:
Cytat

Warning: copy() [function.copy]: Unable to access http://www.voxim.pl/gfx/news/inne/tomtom_go700.jpg in /home/....../test.php on line 10
Nie mo¿na by³o dodaæ pliku.
http://www.voxim.pl/gfx/news/inne/tomtom_go700.jpg
/tmp2/test.jpg

I teraz tak:
- plik php ma prawa -rw-rw-rw- 1 daemon daemon
- katalog /tmp2 drwxrwxrwx 2 daemon daemon

Na moje oko uprawnienia ok, nic się nie zmieniło zresztą w tej kwestii po upgradzie php.
Szukałem rozwiązań w goglach itp. Niestety w większości sprawa sprowadza się do upranień. Próbowałem nic z tego.
Znalazłem też informację i wykorzystaniu funkcji move_uploaded_file(). Ta funkcja również nie działą (jakby była pomijana) i nie generuje żadnych błędów.

Pomocy!

Pozdrawiam,
Robert
blooregard
Spróbuj z php.ini.
Nie wiem, czy to może mieć jakiś związek konkretnie z funkcją copy() (raczej z uploadem plików), ale podejrzyj, jak są ustawione dyrektywy file_upload i upload_max_filesize.
exen
Cytat(blooregard @ 27.01.2009, 23:30:38 ) *
Spróbuj z php.ini.
Nie wiem, czy to może mieć jakiś związek konkretnie z funkcją copy() (raczej z uploadem plików), ale podejrzyj, jak są ustawione dyrektywy file_upload i upload_max_filesize.


Dzięki za odpowiedź!
Tu jest ok, tak mam ustawione:
file_upload = on
upload_max_filesize =4M

Natomiast jak wyłączam safe_mode to działa mi ta funkcja i nie mam błędów.
Jak dotąd było to dla mnie jasne, że przy safe_mode na ON funkcja copy() sprawdza ownera pobieranego pliku i katalogu w miejscu docelowym.
Owner Apache jak i katalogu docelowego to 'daemon'. Na moje oko wszystko się zgadza, lecz nie działa.

Zapodam jeszcze ustawienia php.ini dotyczące SAFE_MODE:

  1. <?php
  2. safe_mode = On
  3. safe_mode_gid = Off
  4. safe_mode_include_dir = "/tmp2"
  5. safe_mode_exec_dir =
  6. safe_mode_allowed_env_vars = PHP_
  7. safe_mode_protected_env_vars = LD_LIBRARY_PATH
  8. open_basedir = "/tmp2"
  9. disable_functions = system, exec, passthru, popen, phpinfo, shell_exec
  10. disable_classes =
  11. expose_php = Off
  12. ?>


sciana.gif

Zgłosił już ktoś podobny bug do php.net

http://bugs.php.net/bug.php?id=46888&thanks=6

Zastosuje tego patcha i zobaczę co z tego będzie. Powinno pomóc.
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.