Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Linux, a Windows? - nie wyświetlanie plików
Forum PHP.pl > Forum > PHP
EastWest
Hej, znów problem sad.gif
Mam napisany skrypt, który pobiera skin gracza, wybiera z niego głowę, a następnie wyświetla i zapisuje do folderu cache. Potem przy kolejnym wywołaniu skryptu sprawdza jest data w nazwie pliku. Jeśli jest aktualna wyświetla plik z folderu, w przeciwnym wypadku generuje aktualny. Na windowsie z apache działało mi to znakomicie. Jednak po wstawieniu pliku na serwer i wygenerowaniu obrazka, a następnie po ponownym odwołaniu się do niego, nie chce się wyświetlić. Jakieś pomysły? :C
aras785
Jasnowidzami niestety nie jesteśmy smile.gif Zapodaj kod
EastWest
  1. <?php
  2.  
  3.  
  4. $cacheFolder = 'cache';
  5.  
  6.  
  7. ini_set("display_errors",FALSE);
  8. header("Content-type: image/png");
  9.  
  10. $name = $_GET['name'];
  11. $size = $_GET['size'] > 0 ? $_GET['size'] : 100;
  12.  
  13.  
  14. if(isset($_GET['cache'])){
  15.  
  16. if(!is_dir($cacheFolder)){
  17. mkdir($cacheFolder);
  18. }
  19.  
  20.  
  21. $time = date("d");
  22. $old = date("d") - 1;
  23. $cachePath = $cacheFolder . DIRECTORY_SEPARATOR . $name . '_' . $time . '_' . $size . '.png';
  24. $file = $name. '_'. $time . '_' . $size . '.png';
  25. chmod($file,0777);
  26. $cachePathOld = $cacheFolder . DIRECTORY_SEPARATOR . $name . '_' . $old . '_' . $size . '.png';
  27.  
  28.  
  29. if(is_file($cachePath) && !isset($_GET['skip'])){
  30. $lol = $cachePath;
  31. $lol1 = explode("/", $lol);
  32. $lol2 = $lol1[1];
  33. $lol3 = explode(".", $lol2);
  34. $lol4 = $lol3[0];
  35. $lol5 = explode("_", $lol4);
  36. $lol6 = $lol5[1];
  37. if ($lol6 >= date("d")) {
  38. return true;
  39. }
  40. else {
  41. include($cachePath);
  42. unlink($cachePathOld);
  43. exit();
  44. }
  45. }
  46. }
  47.  
  48.  
  49. $src = imagecreatefrompng("http://minecraft.net/skin/{$name}.png");
  50.  
  51.  
  52. if(!$src){
  53. $src = imagecreatefrompng("http://www.minecraft.net/skin/char.png");
  54. }
  55.  
  56. $dest = imagecreatetruecolor(8, 8);
  57. $obraz = imagecopy($dest, $src, 0, 0, 8, 8, 8, 8); // copy the face
  58. $obraz1 = imagecopy($dest, $src, 0, 0, 40, 8, 8, 8);
  59. imagedestroy($obraz1);
  60.  
  61. $final = imagecreatetruecolor($size, $size);
  62. imagecopyresized($final, $dest, 0, 0, 0, 0, $size, $size, 8, 8);
  63.  
  64.  
  65. if(isset($_GET['cache'])){
  66.  
  67. imagepng($final, $cachePath);
  68. include($cachePath);
  69. }
  70. else {
  71.  
  72. imagepng($final);
  73. }
  74.  
  75.  
  76. imagedestroy($im);
  77. imagedestroy($dest);
  78. imagedestroy($final);
  79.  
  80. ?>

Na xampp działa, na linuxie nie c:
Pyton_000
Przede wszystki wywal header i włącz wyświetlanie błędów wtedy coś powiedz.
EastWest
Otrzymuję pustkę przy probie kolejnego wywołania
jackraymund
zakładam że gdzieś tutaj kończy się życie skryptu
  1. if ($lol6 >= date("d")) {
  2. return true;
  3. }
  4. else {
  5. include($cachePath);
  6. unlink($cachePathOld);
  7. exit();
  8. }

może zrób baze i trzymaj tam md5 obrazków? jest inny to zmieniasz
EastWest
Ale na Windows działa :C
A może zamiast include zrobić imagepng(); czy mija się to z celem?
Pyton_000
echo(file_get_contents('file'));
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.