Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Lokalnie działa, na serwerze nie
Forum PHP.pl > Forum > Przedszkole
hyperek
Witam serdecznie, mam konto na serwerze www.resnet.pl. Wykupiłem domenę w cal.pl. Wgrałem swoje pliki na serwer. Korzystam lokalnie z Krasnala. Stworzyłem małą galerię zdjęć, gdzie czytana jest ścieżka do katalogu, a w nich plików i tak podawana jest na stronie. Problem w tym, że lokalnie u mnie wszystko pięknie funkcjonuje, ale jak wysyłam w tej postaci na serwer, to dostaję komunikat, że moja funkcja zwraca wartość pustą, zamiast jakieś dane: "Warning: sort() expects parameter 1 to be array, null given". Czym to może być spowodowane?
Bardzo proszę o pomoc...
Pozdrawiam!
Hyper.
gox
error wlasciwie mowi wszystko, wbij sztylet w cialo tego skryptu linijke wczesniej, aby zobaczyc jakiego koloru jucha wyplynie, czyt. zdebuguj.

albo zapodaj kodem
webdice
Z racji że wszystkie wróżki przebywające na tym forum, są w tym momencie na urlopie, spróbuje sam zgadnąć o co chodzi. Wydaje mi się że jest to spowodowane niskimi zarobkami robotników w Republice Południowej Afryki.

A tak na poważnie, podaj człowieku trochę kodu.
hyperek
Już już, przepraszam smile.gif
To jest plik, gdzie pokazywana jest galeria, tutaj korzystam z dodatkowego pliku pgfunctions.php

Kod
<?php

/***INCLUDE THE FUNCTION FILE ***/
if (!file_exists("pgfunctions.php"))
       {
       echo "Dostęp zabroniony<br>";
       }
include ("pgfunctions.php");

echo "<table cellspacing=\"5\">";

echo "<tr>";
echo "<td><font class=\"tekstmaly\">Dostępne galerie:</font>&nbsp;&nbsp;&nbsp;</td>";
$dir_list = Dir_List($base_serverpath);
for ($i = 2; $i < count ($dir_list); $i++)
        {
        $dirname = $dir_list[$i];
        echo "<td><font class=\"tekstmaly\"><a href=\"$PHP_SELF?gallery_name=$dirname\">$dirname</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";
        }
echo "</tr>";
echo "</table>";    

/*** if there's not a Gallery chosen - chose the first ***/
if (!$gallery_name)
        {
        $gallery_name = $dir_list[2];
        }
    
echo "<center><table cellpadding=\"8\">";
echo "<tr>";
echo "<td colspan=\"4\">";
echo "<br><font face=\"arial\" color=\"#cc0033\" size=\"2\">";
echo "<div align=\"center\">$gallery_name</div>";
echo "</font>";
echo "<hr width=\"100%\" size=\"2\" align=\"right\" color=\"#cc0033\">";
echo "</td>";
echo "</tr>";

/*** if there's already a Picture chosen ***/
if ($picture_n)
        {
        $picturename_withpath = $base_dir."/".$gallery_name."/". $picture_n;
        echo "<tr><td>";
        echo "<img src=\"$picturename_withpath\" border=\"0\">";
        echo "</td></tr>";
        }
else
        {

$Picture_List = Picture_List ($base_serverpath . "/".$gallery_name);
$picture_at_row =0;
for ($i = 0; $i < count($Picture_List); $i++)
    {
    $Picturename = $Picture_List[$i];
    $particles = explode(".", $Picturename);
    $Titel = $particles[0];
    $particles[0] = $particles[0]."_thumb";
    $Picturename_thumb = implode(".", $particles);

    $Picturename_thumb_withpath = $base_dir."/".$gallery_name."/". $Picturename_thumb;
    $Picturename_thumb_withserverpath = $base_serverpath."/".$gallery_name."/". $Picturename_thumb;
    $Picturename_withpath = $base_dir."/".$gallery_name."/". $Picturename;

    if (!file_exists("$Picturename_thumb_withserverpath"))
       {
       $Picturename_thumb_withpath = "no_thumb.gif";
       }

    if ($picture_at_row >= $pictures_per_row) $picture_at_row=0;
       if ($picture_at_row==0) echo "<tr>";
    echo "<td>";
    echo "<a href=\"$PHP_SELF?picture_n=$Picturename&gallery_name=$gallery_name\"><img src=\"$Picturename_thumb_withpath\" width=\"120\" border=\"0\"></a>";
    echo "</td>";
    $picture_at_row ++;
    }
    }

echo "<tr>";
echo "<td colspan=\"4\">";
echo "<br><br><br><hr width=\"100%\" size=\"2\" align=\"right\" color=\"#cc0033\">";
echo "<font class=\"menu\"><div align=\"right\"><a href=\"javascript:history.back()\">back</a></div></font><br><br>";
echo "</td>";
echo "</tr>";

echo "</table>";

?>


c.d.

Wspomniany wcześniej pgfunctions.php:
Kod
<?php
if (!file_exists("pgconfig.php"))
       {
       echo "Uups! Fatal Error pgconfig.php is missing, please contact your webmaster<br>";
       }
include ("pgconfig.php");

$version = "V0.9b";
$base_url = $SCRIPT_NAME;
$base_dir = dirname($SCRIPT_NAME);
$base_serverpath = dirname($PATH_TRANSLATED);
$date = Date("d M Y");

function Error($err)
         {
         global $webmaster_mail, $home_url, $version;
         echo "<h2>Uups!  Error: $err</h2><br>";
         echo "contact webmaster: <A
HREF=\"mailto:$webmaster_mail\">$webmaster_mail </A><br>";
         echo "<A HREF=\"http://$home_url\">home</A><br><br>";
         echo "Script $version, copyrights by <A
HREF=\"http://www.dgeuropa.pl\">www.dgeuropa.pl</A>";
         }

function Dir_List ($path)
         {
         $dir = @opendir($path);
         if ($dir)
            {
            while ($file = readdir($dir))
                 {
                 /*** only dir's not files ***/
                 if (is_dir($file))
                            {
                            $dir_list[]= $file;
                        }
                  }
            }
         else
             {
             @closedir($path);
             Error ("Dostęp zabroniony");
             }
         @closedir($path);
         sort($dir_list);
         return $dir_list;
         }

function Picture_List ($gallery_path)
         {
         $dir = @opendir($gallery_path);
         if ($dir)
            {
            while ($file = readdir($dir))
                 {
                 /*** only jpeg, jpg, gif and bmp ***/
                 if (eregi("\.(jpeg|jpg|gif|bmp)$", $file))
                    {
                        /*** without the thumbnail files ***/
                        if (!eregi("_thumb\.(jpeg|jpg|gif|bmp)$", $file))
                        {
                         $Picture_List[]= $file;
                        }
                    }
                 }
            }
         else
             {
             @closedir($gallery_path);
             Error ("Dostęp zabroniony");
             }
         @closedir($gallery_path);
         sort ($Picture_List);
         return $Picture_List;
         }
?>


Błąd wywala mi taki:
Warning: sort() expects parameter 1 to be array, null given in /home/moja_nazwa/public_html/pl/pgfunctions.php on line 45
oraz
Warning: sort() expects parameter 1 to be array, null given in /home/moja_nazwa/public_html/pl/pgfunctions.php on line 73

Z góry dziękuję za odpowiedzi smile.gif
cckoles
edit: nie spojrzalem ze to wyrazenie reguralne winksmiley.jpg powstawiaj do tablic 0 i zobacz czy pomoze.
phpion
Problemem jest to, że jeśli w katalogu nie ma plików, zmienna, którą przekazujesz do sortowania nie jest tablicą tylko ma wartość NULL. Możesz wyeliminować błąd deklarując zmienną jako pustą tablicę (zmiany w kodzie oznaczone komentarzem // tutaj):
  1. <?php
  2. if (!file_exists("pgconfig.php"))
  3.  {
  4.  echo "Uups! Fatal Error pgconfig.php is missing, please contact your webmaster<br>";
  5.  }
  6. include ("pgconfig.php");
  7.  
  8. $version = "V0.9b";
  9. $base_url = $SCRIPT_NAME;
  10. $base_dir = dirname($SCRIPT_NAME);
  11. $base_serverpath = dirname($PATH_TRANSLATED);
  12. $date = Date("d M Y");
  13.  
  14. function Error($err)
  15.  {
  16.  global $webmaster_mail, $home_url, $version;
  17.  echo "<h2>Uups! Error: $err</h2><br>";
  18.  echo "contact webmaster: <A
  19. HREF=\"mailto:$webmaster_mail\">$webmaster_mail </A><br>";
  20.  echo "<A HREF=\"http://$home_url\">home</A><br><br>";
  21.  echo "Script $version, copyrights by <A
  22. HREF=\"http://www.dgeuropa.pl\">www.dgeuropa.pl</A>";
  23.  }
  24.  
  25. function Dir_List ($path)
  26.  {
  27.  $dir_list = array(); // tutaj
  28.  $dir = @opendir($path);
  29.  if ($dir)
  30. {
  31. while ($file = readdir($dir))
  32.  {
  33.  /*** only dir's not files ***/
  34.  if (is_dir($file))
  35. {
  36. $dir_list[]= $file;
  37. }
  38. }
  39. }
  40.  else
  41.  {
  42.  @closedir($path);
  43.  Error ("Dostęp zabroniony");
  44.  }
  45.  @closedir($path);
  46.  sort($dir_list);
  47.  return $dir_list;
  48.  }
  49.  
  50. function Picture_List ($gallery_path)
  51.  {
  52.  $Picture_List = array(); // tutaj
  53.  $dir = @opendir($gallery_path);
  54.  if ($dir)
  55. {
  56. while ($file = readdir($dir))
  57.  {
  58.  /*** only jpeg, jpg, gif and bmp ***/
  59.  if (eregi(".(jpeg|jpg|gif|bmp)$", $file))
  60. {
  61. /*** without the thumbnail files ***/
  62. if (!eregi("_thumb.(jpeg|jpg|gif|bmp)$", $file))
  63. {
  64.  $Picture_List[]= $file;
  65. }
  66. }
  67.  }
  68. }
  69.  else
  70.  {
  71.  @closedir($gallery_path);
  72.  Error ("Dostęp zabroniony");
  73.  }
  74.  @closedir($gallery_path);
  75.  sort ($Picture_List);
  76.  return $Picture_List;
  77.  }
  78. ?>
hyperek
Dziękuję za radę - sprawiło to, że nie widać tych Warningów na stronie, które wkleiłem w poprzednim poście. Ale rzecz polega na tym, że pliki są w katalogach. Mówię, lokalnie otwiera galerię bez problemu, dopiero po wgraniu na serwer jest błąd jak powyżej.
W domu jest to ścieżka dostępu localhost/moja_nazwa/pl/foto.php, a na serwerze jest to home/public_html/moja_nazwa/pl/foto.php

P.S.
Tak patrzę jeszcze na ten poradnik tutaj: Temat: Najczestsze bledy i może rzeczywiście na serwerze jest coś wyłączone, że to nie działa i trzeba byłoby inaczej to jakoś napisać?

Udało się. Pomogło coś takiego:

Cytat
Chcesz miec sciezke bazowa? To sie robi tak:
definiujesz sobie stalą ze sciezka bazową i odwolujesz sie do tej stalej.
  1. <?php
  2. define('PATH_BASE', 'jakassciezka/');
  3. ?>


a potem w kodzie sie do niej odwolujesz:
  1. <?php
  2. $path = PATH_BASE.'reszta czesc scizki do jakiegos katalogu';
  3. ?>


gdy przenosisz aplikacje to ustawiasz jej inna sciezke bazową.
Ja ssciezke bazową ustawiam tak, ze nie musze przy przenosinach jej zmeniac. wystarczy do tego prosty myk:
  1. <?php
  2. define('PATH_BASE',realpath(dirname(__FILE__)).'/');
  3. ?>
rybik
dla pełnej kompatybilności locala z serwerem zewnętrznym nie używaj slashy tylko stałej DS, unikniesz kłopotów z różnymi slashami w systemach unix i windows używanymi w ściezkach
hyperek
Jednak cieszyłem się troszkę za wcześnie. Zaczął występować trochę inny problem, mianowicie gdy klikam na miniaturkę (plik_thumb.jpg) w adresie pojawia mi się foto.php?gallery_name=nazwa1&picture_n=nazwa2.jpg i te wartości powinny zostać zapamiętane jak rozumiem, bo jest fragment kodu:
Kod
if ($picture_n)
        {
        $picturename_withpath = $base_dir."/".$gallery_name."/". $picture_n;
        echo "<tr><td>";
        echo "<img src=\"$picturename_withpath\" border=\"0\">";
        echo "</td></tr>";
        }

który powinien wyświetlić duży plik, ale tego nie robi. Posprawdzałem wartości zmiennych i są puste. Tak jakby nie pobierał żadnych danych i zwracał puste, bo w w/w przykładzie przechodzi do "else", gdzi po prostu jest wyświetlana cała galeria w wersji _thumb.
Może to mieć coś wspólnego z atrybutami na serwerze?


OK udało się! Odpowiedź była tutaj: http://nospor.pl/php-faq-n29.html#faq-3 DZIEKI!!! smile.gif
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.