Avatar billede camban Nybegynder
25. juni 2008 - 21:16 Der er 18 kommentarer

Fejl i include function - PHP5

Hejsa

Der er pludselig kommet en del fejlmeddelelser på min side. Det ser ud til at dem der står for webhostingen af siden har opgraderet til PHP5, og derfor disse fejl. De siger at man ikke kan inkludere på den måde, det er gjort på sitet på nuværende tidsspunkt med PHP5.

Jeg får flg. fejlmeddelelser:

Warning: include() [function.include]: URL file-access is disabled in the server configuration in ...

Warning: include(http://www.mikkelholst.dk/huskoncept.php?side=9&file=9.jpg) [function.include]: failed to open stream: no suitable wrapper could be found in ...

Warning: include() [function.include]: Failed opening 'http://www.mikkelholst.dk/huskoncept.php?side=9&file=9.jpg' for inclusion (include_path='.:/usr/local/lib/php') in ...

Koden til siden:

<?php
$side = @$_GET['side'];

$side = str_replace('/', '', $side);
if (empty($side) || !is_dir('projekter/' . $side))
{
    $side = null;
}

if ($side !== null)
{
    $largeImage = "";

    if (isset($_GET['file']))
    {
        $largeImage = $_GET['file'];
    }
    else
    {
        $p = opendir("projekter/" . $side);
        while ($filnavn = readdir($p))
        {
            if ($filnavn != "." && $filnavn != "..")
            {
                $largeImage = $filnavn;
                break;
            }
        }
        closedir($p);
    }

    $p = opendir("projekter/" . $side);

    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"260\">";
    echo "<tr><td colspan=\"5\" height=\"40\"><img src=\"images/transpixel.gif\" height=\"40\"></td></tr>";
    echo "<tr>";
        echo "<td valign=\"top\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"166\"><tr>";
    $id = $_GET["side"];

    $afile = file("projekter/content.txt");
    for ($i=0; $i<count($afile); $i++)
    {
        $afileline = explode("|", chop($afile[$i]));
        if ($id == $afileline[0])
            echo "<td  class=\"header\">". $afileline[2] . "<br><br>\n</td></tr><tr><td class=\"normaltxt\">" . $afileline[3] . "<br><br>\n" . $afileline[4] ."</td>";
    }

    echo "</tr></table></td>";

    echo "<td><img src=\"images/transpixel.gif\" width=\"20\"></td>";
    echo "<td align=\"left\" valign=\"top\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    while ($filnavn = readdir($p))
    {
        if ($filnavn != "." && $filnavn != "..")
        {
            echo "<tr><td valign=\"top\">";

            if ( $_GET['file'] == $filnavn) {
            echo "<img src=images/sort.gif width=\"11\" height=\"8\" border=\"0\">";
            } else {
            echo "<a href=\"index.php?side=huskoncept&billede=" . urlencode($side) . "&amp;file=" . urlencode($filnavn). "\"  onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('sort". urlencode($filnavn)."','','images/sort.gif',1)\">";
            echo "<img src=images/sort2.gif name=\"sort". urlencode($filnavn)."\" width=\"11\" height=\"8\" border=\"0\">";
            echo "</a>";
            }
            echo "<br><img src=\"images/transpixel.gif\" width=\"6\">";
            echo "</td></tr>";
        }
    }
    echo "</table></td>";
    echo "<td><img src=\"images/transpixel.gif\" width=\"10\"></td>";
    echo "<td valign=\"top\" align= \"left\" width=\"400\">";
    echo "<img height=\"200\" src=projekter/";
    echo $side;
    echo "/";
    echo $largeImage;
    echo "><br>\n";
    echo "</td>";
    echo "</tr></table>";   
}
?>


Er der nogen der kan komme med hints og hjælp til hvordan jeg får rettet op på det. Da jeg lavede det sidste gang, var det ikke ligefrem så nemt for mig :o)
Avatar billede jakobdo Ekspert
25. juni 2008 - 21:28 #1
Henter du billederne eksternt ?
Avatar billede jakobdo Ekspert
25. juni 2008 - 21:30 #2
Får du samme fejl, hvis du prøver:

$content = file_get_contents('http://www.mikkelholst.dk/huskoncept.php?side=9&file=9.jpg');

echo $content;
Avatar billede camban Nybegynder
25. juni 2008 - 21:40 #3
Jeg læste mig lige frem til at det er man må allow url open men not include i samme fil - pgr. sikkerhed. - Så skal det hele måske laves om?

jakobdo: Hvor skal jeg sætte dit eksempel ind?
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 21:47 #4
Måske kan du få fat i det med funktionerne fra http://php.net/curl
Avatar billede jakobdo Ekspert
25. juni 2008 - 21:48 #5
Er du sikker på det er det kode herover som giver fejlen ?
Du har nemlig ikke nogen include() i din kode der.
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 21:49 #6
Men hvorfor siger du include til en .jpg-fil ?
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 21:50 #7
Og det gør du så heller ikke ... :)
Avatar billede camban Nybegynder
25. juni 2008 - 21:50 #8
Jeg inkluderer huskoncept.php i min index.php

$file=$_GET['file'];
$pic=$_GET['billede'];

switch($_GET['side']) {
    case "forside":
        include("forside.php");
        break;
       
    case "huskoncept":
        include("huskoncept.php?side=".$pic."&file=".$file);
        break;

    default:
        include("forside.php");
        break;
}

Det er virkelig længe siden jeg har lavet det - så det er først lige ved at dæmre.
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 21:53 #9
Du kan ikke nogensinde have lavet

    include("huskoncept.php?side=".$pic."&file=".$file);

så det fungerede. Du skal includere en fil, men det ligner en URL.
Avatar billede jakobdo Ekspert
25. juni 2008 - 21:54 #10
Du bør ikke kunne lave:

include("huskoncept.php?side=".$pic."&file=".$file);
Der bør du lave:

include("huskoncept.php");

og så i din huskoncept.php trække variablerne:

$pic
og
$file
Avatar billede camban Nybegynder
25. juni 2008 - 22:00 #11
erikjacobsen: Jeg havde hele url med (www.mikkelholst.dk/huskoncept.php?side=".$pic."&file=".$file) - det virkede.

jakobdo: Ok - er det pga. den nye PHP5 - og vil det virke i PHP5?
Avatar billede jakobdo Ekspert
25. juni 2008 - 22:04 #12
Du bør aldrig bruge: include("noget.php?hmm=1&mere=2");

Du bør netop prøve at lave:

include("noget.php");

og i noget.php laver du så:

$hmm = $_GET['hmm'];
$mere = $_GET['mere'];

Eller hvordan du nu vil gøre det.
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 22:15 #13
Men hvorfor inkluderer du fra et andet site? Eller er det fra det samme site??
Stakkels webserver, der skal lave ekstra arbejde. Stakkels kunder, der skal vente længere på at se siden.

Det var da godt de fik en PHP med en indstilling, så du kan lave scriptet ordentligt, hva'?
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 22:16 #14
Hvis du har noget at gøre med siden på mikkelholst.dk, så kig lige på de små billeder forneden på forsiden: de bliver hentet som større billeder, og scaleret ned af browseren. Det er dumt, og dårligt.
Avatar billede camban Nybegynder
25. juni 2008 - 22:16 #15
Okay - jeg må se om jeg kan få det til at virke. Jeg så lige at der var endnu en fil involveret... Tak for hjælpen indtil videre :o)
Avatar billede camban Nybegynder
25. juni 2008 - 22:19 #16
Det hel ligger på samme site, og jeg ved ikke, om jeg synes det er fedt med opgradering af webserveren...ikke lige nu, når jeg sidder med det i hvert fald ;o) Tak for tippet med billederne, der sikkert masser af ting der kunne gøres bedre.
Avatar billede erikjacobsen Ekspert
25. juni 2008 - 22:21 #17
Det er derfor vi er her ;)

De dumme ting man har lavet engang indhenter altid een på et ubelejligt tidspunkt. Min erfaring :(
Avatar billede jakobdo Ekspert
25. juni 2008 - 22:24 #18
Derfor kan man lige så godt lave det korrekt første gang! :o)
Toppen af dovenskab...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester