• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

php-Fehlermeldung

pho

Neues Mitglied
Hey,
kann mir jemand sagen was das Problem ist?

Warning: glob() expects parameter 2 to be long, string given in /mnt/webj/a3/06/5146306/htdocs/kanonenfest/new/galerie.php on line 137
Warning: array_shift() [function.array-shift]: The argument should be an array in /mnt/webj/a3/06/5146306/htdocs/kanonenfest/new/galerie.php on line 137

Auf einem Server geht mein Code, auf dem anderen kommt diese Meldung. Ist eventuell das PHP auf dem Server (Vrs. 4.4.9) veraltet?

Danke!
 
eher nicht:
glob will (PHP 4 >= 4.3.0, PHP 5)
array_shift ist für 4 und 5 gleich (soweit ich weiss)

glob meckert, dass es einen String statt eines Flags bekommt. GLOB_BRACE ist nicht bei allen älteren Versionen vorhanden, vielleicht liegt es daran. (PHP: glob - Manual)

array_shift meckert, dass kein array übergeben wird. Wahrscheinlich gibt dein Script nur eine Variable $a statt $a[0]. Dass kann man beheben, indem man die Variable definiert
PHP:
$a = array();

Du könntest ja von deinem Script mal die betreffende Zeile plus 10 davor und danach posten.
 
Eventuell hilft dir ja das:
PHP: glob - Manual

Der zweite Fehler wird durch den ersten Fehler von glob() ausgelöst, da glob() kein Array zurückgibt. Denke ich mal.

EDITH: Zu langsam :)
 
Zuletzt bearbeitet:
Also von GLOB_BRACE ist in der PHP-Info keine Rede, allerdings auch nicht bei dem Server wo es funktioniert.

Der betreffende Code ist nur ganz kurz:

PHP:
[IMG]http://www.html.de/.$datei.[/IMG]";}?>[PHP]
 
Der betreffende Code ist nur ganz kurz:

PHP:
[IMG]http://www.html.de/.$datei.[/IMG]";}?>[PHP][/QUOTE]

Ganz so kurz natürlich nun auch wieder nicht XD
Hier noch ein Versuch:
[PHP]<?php $thumb = "fotos/galerie/";$dir = glob("$thumb{*.*}", GLOB_BRACE); while ($datei = array_shift($dir)){ echo '"$datei."' rel='lightbox[roadtrip]' alt='Zum Vergrößern anklicken' title='Thumb'><img style:'margin-bottom: 5px; margin-right: 5px; max-width: 195px;' src=".$datei."></a>";}?>
.$datei.
 
Also, wieso sollte denn von GLOB_BRACE in der PHP-Info die Rede sein?

Schau dir einfach meinen Link an. Der führt direkt zu einem Kommentar in der PHP-Doku welcher einen Workaround für dein Problem beschreibt.

EDIT:
Ich frage mich gerade ob du überhaupt GLOB_BRACE benötigst.

PHP:
glob("fotos/galerie/*.*");

Sollte eigentlich auch reichen, da du ja sowieso alle Dateien aus dem Ordner willst.
 
Zuletzt bearbeitet:
Damit keine Verwirrung aufkommt, ich kann auch nur raten, was falsch geht, GLOB_BRACE war ein Schuss ins Blaue.
Ohne Code ist das doch sowieso alles der Glaskugel zu entnehmen.
Knochen werfen wäre auch noch eine Alternative...
 
DANKE! Das GLOB_BRACE wegzulassen funktioniert soweit ganz gut. Aaaber... nun werden zwei "leere Bildplätze" vor den eigentlichen Bildern angezeigt.
HTML:
src="fotos/galerie/."
HTML:
src="fotos/galerie/.."

Warum macht der nun das wieder?

Und gleich noch eine zweite "Auffälligkeit" auf dem "Problem-Server":
Ich möchte den Inhalt eines kompletten Verzeichnisses auch löschen können. Dafür habe ich diesen Code:
PHP:
<?php
$strDir = '../fotos/galerie/';
$arFiles = scandir ( $strDir );
foreach ( $arFiles as $strFile )
 {
if ( $strFile != '.' && $strFile != '..'
&& ! is_link ( $strDir . $strFile )
&& is_file ( $strDir . $strFile ) )
{
if ( @ unlink ( $strDir . $strFile ) )
{
print 'Gelöscht: ' . $strDir . $strFile . '<br /> ' . "\n";
}
else
{
print 'Fehlschlag: ' . $strDir . $strFile . '<br />' . "\n";
}
}
}
?>

Hier kommt als Fehlermeldung: Fatal error: Call to undefined function: scandir() in /mnt/webj/a3/06/5146306/htdocs/kanonenfest/new/intern/aussteller_delete.php on line 25
Auf dem anderen Server funktionierts wieder einwandfrei, daher wüsst ich nicht was ich ändern sollte/könnte.

Danke für eure Mühen!
 
scandir() gibt's erst ab PHP-Version 5. Wie die Fehlermeldung schon sagt, ist die Funktion scandir() nicht definiert.

Wenn du PHP-Fehlermeldungen bekommst, am besten erst mal Google bemühen. Jede Fehlermeldung wurde bereits in irgendeinem Forum behandelt und begründet.

Für das "Problem":
PHP:
src="fotos/galerie/."

Habe ich keine Lösung, da es mir nie Wert war nach einer zu suchen. Ich habe einfach die ersten zwei Einträge im Array gelöscht.
 
Zuletzt bearbeitet:
Die leeren Bilder entstehen durch die Einträge "." und ".." (also eine Verzeichnisebene höher oder root-Verzeichnis). Mal davon abgesehen ist in deinem gepostetenCode ein Fehler, der zu einem Parse-Error führt.

Tausch doch einfach
PHP:
 <?php $thumb = "fotos/galerie/";$dir = glob("$thumb{*.*}", GLOB_BRACE); while ($datei = array_shift($dir)){ echo '"$datei."' rel='lightbox[roadtrip]' alt='Zum Vergrößern anklicken' title='Thumb'><img style:'margin-bottom: 5px; margin-right: 5px; max-width: 195px;' src=".$datei."></a>";}?>

gegen einen Code, der mit älteren Versionen von PHP problemlos funktioniert.

PHP:
<?PHP
$thumb = 'fotos/galerie/';

if ($handle = opendir($thumb))
{
    while (false !== ($file = readdir($handle)))
    {
        if ($file != "." && $file != "..")
        {
           echo "<img style:'margin-bottom: 5px; margin-right: 5px; max-width: 195px;' src=".$thumb.$file."></a>";
        }
    }
    closedir($handle);
}

?>
Alternativ kannst du dein Echo auch zwischen folgende Bedingung packen.

PHP:
if ($datei != "." && $datei != "..")
{
    echo ; // deine ausgabe hierhin
}
 
Zuletzt bearbeitet von einem Moderator:
Danke! Alles funktioniert nun! Ich wusste nicht, wie man den Code für ältere Versionen kompatibel macht (wieder nur ein Anfänger...). Aber Dank eurer Hilfe habe ich nun wieder etwas hinzulernen können!
 
Zurück
Oben