Just nu i M3-nätverket
Jump to content

Upload problem ...igen!


Patrik Andersson

Recommended Posts

Patrik Andersson

Hej!

 

Jag har läst på många ,många forum om detta och alla dessa forumsfrågor slutar ofta med... "Tack för hjälpen, nu funkar det"

 

Men så är blir det aldrig för mig :(

 

Så här ligger det till...

 

Jag installerade PHP i min windowsburk och använde denna burk som webserver för min hemsida.

Jag kör phpnuke (phpnuke.org) och allt i windowsburken funkar bra.

 

Nu har jag installerat Red Hat 8 med Apache, PHP 4.2.2 i en annan burk och allt fungerar förutom detta "upload" skript.

 

Uploadskripten ska låta en besökare ladda upp en bild i en mapp på servern.

 

Jag har testat ALLT som jag har läst i olika forum och läst på andra sidor.

 

Min linuxservern är nu konfigurerad på detta viset...

safe_mode = OFF

file_uploads = 1

upload_max_filesize = 10M

upload_tmp_dir = no value

chmod 777 på ALLA mappar som kan ha med detta skript att göra.

 

Är det något mer jag bör kolla innan jag slänger denna linuxburk från min balkong?

 

/Tacksam för hjälp!

Patrik

 

 

Link to comment
Share on other sites

Måste man inte skriva in en sökväg på

upload_tmp_dir = no value

- och ha 777 på den mappen?!

 

\david

 

 

Link to comment
Share on other sites

Patrik Andersson

Jag har läst att om man inte skriver en sökväg där, så använder PHP sin default tmp mapp.

Jag har sök på nätet efter information om var det ska ligga men jag hittar ingen info om detta.

Hur som helst, så har jag kollat alla temp mappar på servern och samtliga tmp mappar har chmod 777.

 

 

Link to comment
Share on other sites

Okidej..

 

Men om du testar att skriva in en mapp som du vet har 777, och sedan kollar om det fungerar att ladda upp... Om det fungerar då så vet du ju att det är något fuffens med php's default-temp-mapp!!

 

Det skadar ju inte att testa :)

 

 

 

Link to comment
Share on other sites

Du bör installera PHP 4.3.x istället för 4.2.x-serien.

 

Testa att ange en temp-mapp, som Trilomictu säger, som du vet har 777-rättigheter.

 

Sedan måste du även öka post_max_size till 10M om det ska fungera med stora filer.

 

Kan det vara så att PHPNuke är dåligt programmerat, och inte använder sig av $_FILES på korrekt sätt?

 

Link to comment
Share on other sites

Patrik Andersson

Ok!

 

Jag har nu angett en tempmapp och jag gav den 777 rättigheter.

Jag har post_max_size till 8M och det bör räcka till mina småbilder.

Funkade inte!!

 

hmmm... detta med att uppgradera PHP verkar vara något att prova. Jag körde med pHP 4.3.1 i windows och då hade jag inga problem.

 

Det som är jobbigast med att uppgradera är att jag inte vet hur man gör om jag inte har uppgraderingen i en RPM-fil.

Jag har bara sysslat med Linux (Red Hat 8) i två veckor ,så jag är inte så duktig på detta.

 

Jag tittade på Red Hat´s FTP, men jag hittar inga PHP installationer högre än 4.2.*

 

Jag ska leta lite på nätet om jag hittar någon bra sida som förklarar detta... om inte ni kan detta?

 

Om PHPNuke skulle vara dåligt programmerad kan tyvärr inte bedömma med min risiga PHP erfarenhet... jag är ASP programerare från början.

 

 

/Patrik

 

 

 

Link to comment
Share on other sites

Det är inte så svårt att kompilera PHP själv på en Linux-maskin.

Se bara till att du har kompilatorn (gcc) och lite andra nödvändiga bibliotek installerade först.

 

Det knepiga är att konfigurera, kompilera och installera extrabiblioteken, som libpng, openssl, freetype osv.

 

Ungefär detta kommando använder jag för att konfigurera PHP 4.3.2:

./configure 'i386-redhat-linux' '--disable-cgi' '--prefix=/usr/local/php4' '--with-exec-dir=/usr/local/php4/userbin' '--disable-debug' '--with-apxs=/usr/local/apache/bin/apxs' '--with-zlib' '--with-gd' '--with-jpeg-dir=/usr' '--with-mm' '--with-openssl=/usr/local/openssl' '--with-png=/usr' '--with-regex=system' '--with-ttf' '--with-layout=GNU' '--enable-ftp' '--enable-sockets' '--with-mhash' '--with-curl' '--with-freetype-dir=/usr' '--enable-cli' '--enable-exif' '--with-mysql=/usr' '--with-mcrypt=/usr/local'

 

Du kan få ta bort/lägga till en del saker, men några ska du ha kvar:

'i386-redhat-linux' '--with-layout=GNU' '--with-mysql=/usr' '--with-apxs=/usr/local/apache/bin/apxs'

 

Det sista argumentet ska såklart peka på din apxs-fil för Apache.

 

När du har packat upp källkoden, gått in i mappen, och kört kommandot ovan, och detta har lyckats, då kan du kompilera med:

make

 

Sedan installerar du med:

make install

 

Nu är det bara att kontrollera httpd.conf; att den pekar på rätt php-modul, och sedan starta om webbservern.

 

Link to comment
Share on other sites

Patrik Andersson

Detta är "To much for me"!!

 

Jag hittade en RPM-fil som någon hade gjort och jag provade den. Jag fick då ett felmeddelande.

hmm... jag ville då testa om det var DEN filen det var fel på eller om det var ett fel som generellt fanns.

Jag testade då att köra en RPM-fil med PHP 4.2.2, men samma fel dök då upp.

Vad kan detta vara för meddelande tro?

 

fel: kan inte skapa %sourcedir /usr/src/redhat/SOURCES

 

 

 

 

Link to comment
Share on other sites

Installerar du RPMen som root, eller som en annan användare?

Du måste göra det som root.

 

Kolla om mappen /usr/src/redhat/SOURCES finns, annars kan du ju skapa den med:

mkdir -p /usr/src/redhat/SOURCES

 

Dock rekommenderar jag dig att försöka lära dig att kompilera själv. Man kan vinna mycket på det i längden.

 

Link to comment
Share on other sites

Patrik Andersson

Jag loggar in med SSH med kommandot su -

Då blir jag väl root?

 

Servern står i källaren utan tangentbord och skärm, så det är lite bökigt att installera därifrån.

Men tror du att det skulle gå bättre om jag försöker installera direkt från servern?

 

Link to comment
Share on other sites

Patrik Andersson

Kan man kolla i loggen vad exakt det är som händer när felet inträffar tro?

Hur kollar man felloggen som Apache skapar?

 

Föresten... Jag skapade /usr/src/redhat/SOURCES och då fungerade det att installera, men filen var nog något annat som hade med PHP att göra. Versionsnumret på PHP ändrades inte.

Filen hette "php-4.3.1-rbt.rh8.1.src.rpm" och tankades hem från http://www.aucs.org/rpmcenter/srpms.html

 

Tack för allt hjälp so far!

 

 

 

Link to comment
Share on other sites

Patrik Andersson

Tack för hjälpen..

Jag fick ett felmeddelande vid installationen att jag måste installera lite annant innan det går att köra.

 

Vad tror du om detta meddelande?

Jag ska alltså installera zziplib innan jag kan köra igen.

Jag har zlib-1.1.4-4 installerat om det är det datorn menar.

 

 

Fel: Ouppfyllda beroenden:

zziplib >= 0.10.27 behövs av php-4.3.2-rbt.apache13.rh8.0

libzzip-0.so.10 behövs av php-4.3.2-rbt.apache13.rh8.0

php = 4.2.2-8.0.5 behövs av (installerat) php-imap-4.2.2-8.0.5

php = 4.2.2-8.0.5 behövs av (installerat) php-ldap-4.2.2-8.0.5

php = 4.2.2-8.0.5 behövs av (installerat) php-mysql-4.2.2-8.0.5

php = 4.2.2-8.0.5 behövs av (installerat) php-odbc-4.2.2-8.0.5

 

Fy vad detta är bökigt!!

Nu går jag och lägger mig!

 

Link to comment
Share on other sites

Du måste alltså installera zziplib.

Testa den här:

ftp://ftp.rpmfind.net/linux/PLD/current/dists/ra/PLD/i686/PLD/RPMS/zziplib-0.10.64-2.i686.rpm

 

Om inte den fungerar kan du behöva kompilera själv. Borde dock inte vara så svårt. Källkoden kan du hitta här:

http://sourceforge.net/project/showfiles.php?group_id=6389

 

Här kan du söka efter RPMer:

http://www.rpmfind.net

 

Du måste först avinstallera gamla PHP, och alla dess tillhörande RPMer:

rpm -e php-imap-4.2.2-8.0.5 php-imap-4.2.2-8.0.5 php-mysql-4.2.2-8.0.5 php-odbc-4.2.2-8.0.5

php-4.2.2-8.0.5

 

Du kanske måste ersätta något paketnamn...

 

 

Link to comment
Share on other sites

Patrik Andersson

Jag ger upp med att försöka att uppgradera via RPM filer. Jag ska försöka att kompilera själv.

Jag laddade upp filen php-4.3.2.tar.gz till mappen "/var/www" via min FTP.

 

Jag packade upp filen med "tar xfz php-4.3.2.tar.gz"

Ursäkta att jag kanske är trög, men var finns nu dom uppackade filerna?

I Boken "Linux som Webserver" står det "efter att du har packat upp filen så förflytta dig till katalogen 'php-4.3.2'

Var finns den då?

 

Link to comment
Share on other sites

Du bör inte packa upp filen i din www-mapp, utan det är bättre om du gör det i exempelvis din hem-mapp (/root).

 

Ladda alltså upp php-4.3.2.tar.gz till /root.

Gå sedan in i den mappen:

cd /root

tar -zxf php-4.3.2.tar.gz

cd php-4.3.2

 

Nu står du i rätt mapp, och det är bara att köra ./configure med rätt argument.

 

Du kommer sannolikt få några fel, om saknade bibliotek osv. Då får du leta upp dem och installera dem först. Det är inte så svårt, bara man tar sig tid, och tar det lungt.

Skriv vilka felmeddelanden du får här om du inte lyckas reda ut det själv.

Jag lovar hjälpa dig...

 

Link to comment
Share on other sites

Patrik Andersson

Jag fick ett mail från en kompis i USA nu och han skickade mig några RPM filer som han säger ska fungera till Red Hat 8.

php-4.3.1-1.i386.rpm

php-imap-4.3.1-1.i386.rpm

php-mysql-4.3.1-1.i386.rpm

php-odbc-4.3.1-1.i386.rpm

 

Då undrar jag innan jag försöker att kompilera PHP själv....

Kan det stämma att hela PHP språket finns i filen php-4.3.1-1.i386.rpm eftersom den endast är 2.9 MB?

 

Jag tänkte att jag skulle försöka att köra dess filer innan jag provar att kompilera PHP själv.

 

 

Link to comment
Share on other sites

Kan det stämma att hela PHP språket finns i filen php-4.3.1-1.i386.rpm eftersom den endast är 2.9 MB?

"Språket" är ett felaktigt uttryck; "körbara filer" ska det vara, och ja, de färdiga, kompilerade filerna är inte så stora.

 

Det är källkoden som tar plats (tänk dig att det är en massa mellanrum, och kommentarer osv, plus att det är läsbar text för människan, och inte maskinkod).

 

Testa du dessa först, och då kan du säkert köra med uppgraderingsalternativet för RPM:

rpm -Uvh php*4.3.1-1.i386.rpm

 

Link to comment
Share on other sites

Patrik Andersson

Körbara filer låter och är ett bättre uttryck.

Jag testar att installera dessa och hoppas på att det fungerar.

Min hemsida är ju nere nu och många besökare vill säkert se den uppe så snart som möjligt.

 

Jag hör av mig om hur det går!

 

Jag har redan avinstallerat PHP så jag kan du inte använda mig av -Uvh

 

 

Link to comment
Share on other sites

Patrik Andersson

Vet du vad detta är för paket?

Är det tre olika paket eller är det samma?

 

libdb-3.2.so behövs av php-4.3.1-1

libmm.so.11 behövs av php-4.3.1-1

libstdc++-libc6.2-2.so.3 behövs av php-4.3.1-1

 

 

Link to comment
Share on other sites

Titta på dina RedHat 8-skivor, så ska du ha dessa paket (med någon arkitektur och versionändelse):

db3-xxxxx.rpm

db3-devel-xxxxx.rpm

mm-xxxxx.rpm

mm-devel-xxxxx.rpm

libstdc++-xxxxx.rpm

libstdc++-devel-xxxxx.rpm

 

Installera dessa, och prova igen.

 

Link to comment
Share on other sites

Patrik Andersson

Jag fick panik och hittade php-4.2.2-8.0.7.i386.rpm på Red Hat´s ftp.

Jag installerade dom för att få igång servern snabbt.

Jag uppgraderade alltså från php-4.2.2-7 till php-4.2.2-8, ingen större uppgradering. Men nu fungerar upload!?

INTE PHPNuke´s uploadskript ,men dock ett annat skript jag hittade. (jag provade det skriptet innan uppgraderingen och du fungerade det inte)

Det måste då betyda att upload funkar!

 

Då finns naturligtvis felet i pHPNuke, men att hitta det är nog inte så lätt för mig.

Jag ska leta lite på nätet om jag hittar något.

 

Jg ska vänta lite med uppgradering till PHP 4.3 men jag vill ha igång hemsidan innan midsommar då jag åker iväg en vecka.

 

 

Link to comment
Share on other sites

Kan du klistra in (eller länka) till skriptet som fungerade, så kan jag nog ta reda på vart felet ligger även i PHPNuke.

 

Det är bara att återvända när du vill ha hjälp med uppgraderingen igen.

 

Link to comment
Share on other sites

Patrik Andersson

Här är koden till det skript som fungerade.

 

 

<?php

if ( isset( $_FILES[ "minfil" ] ) )

{

# en array med de filtyper som vi kan godkänna

$godkända_typer[] = "image/gif" ; # gif

$godkända_typer[] = "image/pjpeg" ; # jpeg

$godkända_typer[] = "image/jpeg" ; # jpeg

$godkända_typer[] = "image/x-png" ; # png

 

# visar infot från $_FILES

echo "\$_FILES[ \"minfil\" ][ \"name\" ] " .

$_FILES[ "minfil" ][ "name" ] . "<br>";

 

echo "\$_FILES[ \"minfil\" ][ \"type\" ] " .

$_FILES[ "minfil" ][ "type" ] . "<br>";

 

echo "\$_FILES[ \"minfil\" ][ \"size\" ] " .

$_FILES[ "minfil" ][ "size" ] . "<br>";

 

echo "\$_FILES[ \"minfil\" ][ \"tmp_name\" ] " .

$_FILES[ "minfil" ][ "tmp_name" ] . "<br>";

 

echo "\$_FILES[ \"minfil\" ][ \"error\" ] " .

$_FILES[ "minfil" ][ "error" ] . "<br>";

 

# om det inte är ett fel och om filtypen är någon av de godkända

# så flyttar vi den till samma katalog som vi finns i

if ( $_FILES[ "minfil" ][ "error" ] == 0 AND

in_array( $_FILES[ "minfil" ][ "type" ], $godkända_typer ) )

{

# kontrollera om den går att flytta från sin temorära plats

# idetta exempel laddar jag upp bilden till en katalog

# med namnet mina_bilder

if ( move_uploaded_file($_FILES[ "minfil" ][ "tmp_name" ],

"./mina_bilder/" . $_FILES[ "minfil" ][ "name" ] ) )

{

# visa om det gick

echo "Filen " .

$_FILES[ "minfil" ][ "name" ] .

" uppladdad till mina_bilder katalogen<br >";

 

# raderar filen direkt - vill inte skräpa ner mina kataloger

# ni raderar självklart inte

unlink ( "./mina_bilder/" . $_FILES[ "minfil" ][ "name" ] );

}

else

{

# nåt skumt håller på att ske?

echo "Möjlig hackerattack?";

}

}

else

{

echo "Du får bara ladda upp bilder";

}

}

?>

<form enctype="multipart/form-data"

action="up.php"

method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="2000000">

<input name="minfil"type="file"><br>

<input type="submit" value="Sänd filen">

</form>

<p>Prova gärna med olika typer av filer, samt med tomt i fileboxen</p>

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...