Yadgar: Inkludierte Funktion wird nicht ausgeführt

Hi(gh)!

Ich versuche gerade, meinen Website auf einem lokal installierten Apache unter Windows 7 zum Laufen zu bringen... prinzipiell funktioniert PHP, aber ich muss (wie schon bei früheren Versuchen) feststellen, dass in inkludierten Dateien definierte und in der Hauptskriptdatei aufgerufene Funktionen nicht ausgeführt werden - aber andererseits keinerlei Fehlermeldungen angezeigt werden!

Konkret:

So sollte die Seite aussehen: http://www.rock-o-data.de/khyberspace/start-d.php

Tatsächlich wird die Text-Navigationszeile unter dem Link zur englischen Version nicht angezeigt...

Der fragliche Code sieht so aus, zuerst das Hauptskript:


<?php
  require("head.php");
  require("navdata-d.php");
  require("nav.php");
  head("Willkommen im Khyberspace!", "format_start.css");
  error_reporting(E_ALL);
  ini_set('display_errors', 1);

?>
  <body>
    <div>
      <p>
	<a href="start-e.php" target="_top">[ English version ]</a>
      </p>
<?
 nav(0, $nav, $navlinks);
?>
      <h1>Willkommen im Khyberspace!</h1>
      <p>
	<span class="i">Khyberspace? Das heißt doch Cyberspace! Oder?</span>
      </p>

head.php:


<?php
  function head($title, $stylesheet)
	{
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
	  echo '  "http://www.w3.org/TR/html4/loose.dtd">';
    echo '<html>';
    echo '  <head>';
		echo '    <title>'.$title.'</title>';		
	  echo '    <meta http-equiv="Content-Type" content="text/html; charset=utf8">';
	  echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
    echo '  </head>';
	}	
?>	

Interessanterweise wird head() im Hauptskript durchaus ausgeführt...

navdata-d.php:


<?php
  $nav = array ("Startseite", "Impressum", "Fahrrad-Blog", "Khyberspace", "POVEarth", "Schwingungen", "Rock-o-Data", "Flagmaker", "Musical Box", "GREENBOOK");
  $navlinks = array ("start-d.php", "impressum.php", "bikeblog.php", "#", "#", "schwingungen-d.php", "#", "flagmaker_einfuehrung.php", "musicalbox.php", "greenbook-d.php" );
?>

nav.php:


<?php
  function nav($gap, $nav, $navlinks)
  {
    echo '<p style="text-align:center">';
    $max = count($nav);
     for ($i=0; $i<$max; $i++)
    {
      if ($i == $gap) continue;
      if ($i < count($navlinks))
        echo '<a href="'.$navlinks[$i].'" target="_top">';
      echo " ".$nav[$i]." ";
      if ($i < count($navlinks))
        echo "</a>";
      if ($i < $max-1 && !($i == $max-2 && $gap == $max-1)) echo "|";
    }
    echo "</p>";
  }
?>

Aus unerfindlichen Gründen kann ich nav() aufrufen, es wird aber nicht ausgeführt - was läuft da falsch?

Bis bald im Khyberspace!

Yadgar

  1. Hi,

    Aus unerfindlichen Gründen kann ich nav() aufrufen, es wird aber nicht ausgeführt - was läuft da falsch?

    Vermutlich sind es die Short Open Tags, die du nur an dieser einzigen Stelle verwendest, während du überall sonst <?php notiert hast.

    MfG ChrisB

    --
    Kids these days just don’t get ASCII art any more – it’s all UTF-this and Unicode-that with those youngsters …
    1. Hi(gh)!

      Vermutlich sind es die Short Open Tags, die du nur an dieser einzigen Stelle verwendest, während du überall sonst <?php notiert hast.

      Tatsächlich, das war wohl der Grund... wirklich Tausend Dank für den Tipp - du hast meinen Abend gerettet!

      Ich wundere mich allerdings, dass dies bei meiner lokalen Linux-Version keine Rolle spielt...

      Bis bald im Khyberspace!

      Yadgar

      1. Hi,

        Vermutlich sind es die Short Open Tags, die du nur an dieser einzigen Stelle verwendest, während du überall sonst <?php notiert hast. Ich wundere mich allerdings, dass dies bei meiner lokalen Linux-Version keine Rolle spielt...

        Dann sind die dort erlaubt und andernorts nicht ... Kann man, soweit ich mich erinnere, in der PHP.ini aktivieren

        cu, Andreas

        --
        Warum nennt sich Andreas hier MudGuard? O o ostern ... Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Moin

          Kann man, soweit ich mich erinnere, in der PHP.ini aktivieren

          da erinnerst du dich richtig. man kann in der ini short_open_tag erlauben oder verbieten

          Gruß Bobby

          --
          -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)