Avatar billede storkie Nybegynder
06. august 2004 - 18:04 Der er 26 kommentarer og
1 løsning

CGI fejl.

Får denne fejl:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


X-Powered-By: PHP/4.3.7
Content-disposition: filename=GIF89a

Ved denne kode:
<?
$hostname = "localhost";
$username = "******";
$password = "*************";
$database = "*****";

$db = mysql_connect("$hostname", "$username", "$password");
mysql_select_db("$database", $db);
$id = $_REQUEST['id'];
if ( $id ) {
    $sql = mysql_query("SELECT * FROM test WHERE id=$id");
    $row = mysql_fetch_array($sql);
   
    if ( $row ) {
        $filename = $row["picture"];
        $type = $row["type"];
        $data = $row["picture"]; //felt med binære data
        Header ("Content-disposition: filename=".$filename);
        Header ("Content-type: $type");
        echo $data;
        exit ();
    }   
}
?>


Det er virket perfekt får, men nu virker det ikke.
Hvad er der galt?
Avatar billede leif Seniormester
06. august 2004 - 18:06 #1
Hvis det har virket før ! Har du tjecket at der ikke er lavet ændringer på serveren eller den har problemer ?
Avatar billede taskmgr Nybegynder
06. august 2004 - 18:10 #2
Prøv med dette og se om du får fejl fra mysql:

<?
$hostname = "localhost";
$username = "******";
$password = "*************";
$database = "*****";

$db = mysql_connect("$hostname", "$username", "$password") or die (mysql_error());
mysql_select_db("$database", $db) or die (mysql_error());
$id = $_REQUEST['id'];
if ( $id ) {
    $sql = mysql_query("SELECT * FROM test WHERE id=$id") or die (mysql_error());

    $row = mysql_fetch_array($sql) or die (mysql_error());
   
    if ( $row ) {
        $filename = $row["picture"];
        $type = $row["type"];
        $data = $row["picture"]; //felt med binære data
        Header ("Content-disposition: filename=".$filename);
        Header ("Content-type: $type");
        echo $data;
        exit ();
    }   
}
?>
Avatar billede storkie Nybegynder
06. august 2004 - 18:21 #3
Det giver det samme... Kan det være noget med min php-opsætning?
Avatar billede taskmgr Nybegynder
06. august 2004 - 18:23 #4
Du sender ikke andre headers i dit dokument, vel? Med andre ord, er der anden kode/html i filen som du kalder?
Avatar billede storkie Nybegynder
06. august 2004 - 18:25 #5
Der er kun den kode jeg har postet.
Avatar billede taskmgr Nybegynder
06. august 2004 - 18:28 #6
Prøv lige at udskrive værdierne i stedet, altså i din if():

if ( $row ) {
        $filename = $row["picture"];
        $type = $row["type"];
        $data = $row["picture"]; //felt med binære data
        print ("Content-disposition: filename=".$filename);
        print ("Content-type: $type");
        //echo $data;
        exit ();
    }
Avatar billede thedeathart Nybegynder
06. august 2004 - 18:29 #7
jeg har oplevet nogen lign. og det var pga. at der blev brugt en windows IIS server, som var konfigureret forkert.
Avatar billede storkie Nybegynder
06. august 2004 - 18:32 #8
Jeg har lige installeret php5, men nu virker min mysql ikke. jeg kører også IIS
Avatar billede taskmgr Nybegynder
06. august 2004 - 18:38 #9
Er det kun dette script der ikke virker, eller er det PHP generelt?
Avatar billede storkie Nybegynder
06. august 2004 - 18:41 #10
Nu virker scriptet, men ikke min MySQL
Avatar billede taskmgr Nybegynder
06. august 2004 - 18:42 #11
Får du en fejl når du kører en mysql_* funktion, eller virker selve serveren ikke?
Avatar billede storkie Nybegynder
06. august 2004 - 18:57 #12
Fejl ved at køre mysql_*
Fatal error: Call to undefined function mysql_connect() in c:\localhost\msksagsarkiv\top.php on line 6

Kan sagtens connecte min mysql med værktøjer som MySQL Control Center
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:02 #13
Har du sat dit extension_dir i php.ini?

Hvis php ligger i roden af dit c drev:
extension_dir = "c:\php\ext"

Og har du fjernet semikolon ved:
extension=php_mysql.dll
Avatar billede storkie Nybegynder
06. august 2004 - 19:04 #14
Ja, men jeg har ikke php_mysql.dll og kan ikke finde den nogen steder
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:05 #15
heller ikke i c:/php/ext/ ?
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:07 #16
Prøv evt. lige at smide libmysql.dll ind i din system32 mappe
Avatar billede storkie Nybegynder
06. august 2004 - 19:16 #17
Har søgt hele min pc igennem, men ingen php_mysql.dll, det virkede ellers med 4'eren. Nogen, som har denne php_mysql.dll fil?
Avatar billede storkie Nybegynder
06. august 2004 - 19:22 #18
Har lige lagt libmysql.dll over i system32 mappen, men uden held
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:28 #19
Har du brugt installeren? Du kan finde mysql udvidelsen i zip pakken:
http://dk.php.net/get/php-5.0.0-Win32.zip/from/a/mirror
Avatar billede storkie Nybegynder
06. august 2004 - 19:34 #20
Ingen php_mysql.dll i den.
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:50 #21
Har du kigget i pakken? Den ligger under ext
Avatar billede storkie Nybegynder
06. august 2004 - 19:55 #22
Fik det til at virke. Havde downloadet 4 versionens zip. Men nu virker det perfekt. Tak for hjælpen. Nogen som vil have points?
Avatar billede taskmgr Nybegynder
06. august 2004 - 19:58 #23
Jo tak, og velbekomme :)
Avatar billede storkie Nybegynder
06. august 2004 - 20:35 #24
Nej, det hjalp ikke.
Nu kommer den med denne fejl:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


X-Powered-By: PHP/5.0.0
Content-disposition: filename=GIF89aîX÷ÿ
Avatar billede taskmgr Nybegynder
06. august 2004 - 20:37 #25
Har du testet om der kommer data fra mysql, som jeg skrev i mit indlæg kl 18:28:29?
Avatar billede storkie Nybegynder
06. august 2004 - 20:41 #26
Ja, nu virker det også. Det var $row = mysql_fetch_array($sql) or die (mysql_error()); den ikke kunne finde ud af... Nu ser hel koden således ud:
<?
$hostname = "localhost";
$username = "**********";
$password = "****";
$database = "******************";


$db = mysql_connect("$hostname", "$username", "$password") or die (mysql_error());
mysql_select_db("$database", $db) or die (mysql_error());
$id = $_REQUEST['id'];
if ( $id ) {
    $sql = mysql_query("SELECT * FROM test WHERE id=$id") or die (mysql_error());
while($row = mysql_fetch_array($sql)){
echo $row[picture];


   
    if ( $row ) {
        $filename = $row["picture"];
        $type = $row["type"];
        $data = $row["picture"]; //felt med binære data
        Header ("Content-disposition: filename=".$filename);
        Header ("Content-type: $type");
        echo $data;
        exit ();
    }
    }   
}
?>
Avatar billede taskmgr Nybegynder
06. august 2004 - 20:44 #27
Det var jo heller ik' den oprindelige kode :) Men det virker, så skidt.
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