Avatar billede eazye Nybegynder
19. september 2009 - 14:03 Der er 11 kommentarer og
1 løsning

copy() vil ikke kopiere fra billede-manipulerings-script

Glædelig lørdag (!?)

Håber der er en af jer der kan hjælpe mig med følgende problem..

Jeg har tidligere brugt phpThumb - et billede-manipulerings-script som ved eks phpThumb.pp?src=fil.jpg&w=200 returnerer fil.jpg i den valgte bredde 200 - phpThumb stiller også en masse andre manipuleringsmuligheder til rådighed som er supersmart.. MEN

jeg har indtil nu, kunnet bruge copy("phpThumb?src=fil.jpg&w=200","nyfil.jpg") til at gemme det manipulerede resultat i en ny billede-fil, så man har en thumb af det originale billede i sin egen fil - men for nyligt er der sket en ændring på mit webhotel (er højst sandsynligt noget safe-mode der er slået til) som gør at copy bare ikke vil kopiere til den nye fil..

copy fungerer stadig som normal ved copy("fil.jpg","nyfil.jpg") det er bare så snart jeg bruger phpThumb eller faktisk et hvilket som helst andet manipuleringsscript, at det ikke fungerer..

Er der nogen der kan lure hvad det kan være?

På forhånd tak

Lasse
Avatar billede olebole Juniormester
19. september 2009 - 14:20 #1
<ole>

Mon så ikke du får en PHP-fejl? Ellers bør du nok sikre dig og sætte denne ind i toppen af dokumentet:
    http://dk2.php.net/manual/en/function.error-reporting.php

/mvh
</bole>
Avatar billede eazye Nybegynder
19. september 2009 - 14:32 #2
ja det ville da være en go idé :)

så får jeg denne fejl..

Warning: copy(): Unable to access phpThumb/phpThumb.php?src=../fil.jpg&w=200 ... Warning: copy(phpThumb/phpThumb.php?src=../fil.jpg&w=200): failed to open stream: Permission denied ...

Har chmod'et alle berørte mapper og filer, for at se om det hjalp.. men stadig samme fejl..
Avatar billede olebole Juniormester
19. september 2009 - 14:39 #3
Hvis din host har slået safe-mode til - og det kunne det tyde på - bør du nok skifte til en host, der kan håndtere serversikkerhed uden panikhandlinger  =)
Avatar billede eazye Nybegynder
19. september 2009 - 14:45 #4
:) jeg må lige kontakte surftown (ironisk nok en banner-reklame til højre) og høre om det er noget de har tænkt sig at holde fast i..
Avatar billede eazye Nybegynder
19. september 2009 - 14:46 #5
http://dk.php.net/manual/en/features.safe-mode.functions.php

de siger følgende om restriktionerne for copy under safe mode..

copy() - Checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed. Checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed. (on source and target )

.. er der noget jeg kan gøre for at overholde det?
Avatar billede olebole Juniormester
19. september 2009 - 15:10 #6
Ikke noget realistisk. Livet er for kort til hosts, der føler sig nødt til at bruge safe-mode
Avatar billede erikjacobsen Ekspert
19. september 2009 - 15:24 #7
De har nok, hvilket er rimeligt, fjernet "fopen wrappers" så copy ikke kan køre en url (som det jo er, når du udfører en .php-fil.

Det klarer du nemt og smertefrit med http://php.net/curl funktionerne.

...omend det er kluntet at kalde een php-fil fra en anden php-fil. Hvad med bare at kode hele funktionaliteten i en og samme fil?
Avatar billede eazye Nybegynder
19. september 2009 - 15:54 #8
jeg forsøgte følgende:

$ch = curl_init("fil.jpg");
$fp = fopen("nyfil.jpg", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);

men nyfil.jpg bliver bare en tom fil..

så for lige at teste det, forsøgte jeg at læse en url ind i et tekst-dokument, altså:

jeg forsøgte følgende:

$ch = curl_init("http://www.eksperten.dk");
$fp = fopen("eksperten.txt", "w");

og det virker fint.. what am I doing wrong?
Avatar billede erikjacobsen Ekspert
19. september 2009 - 15:56 #9
Det skal være en url med curl, som du har opdaget ;)
Avatar billede eazye Nybegynder
19. september 2009 - 16:06 #10
Hahaha, ok - jeg har luret hvad jeg der var :)

når jeg kopierede billedet, og prøvede at åbne det nye, var det, som jeg skrev, en tom fil.. men hvis jeg lige så hvad der i virkeligheden var i filen, så stod der:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.41 Server at lassebasse.dk Port 80</ADDRESS>
</BODY></HTML>

så fordi filen jeg prøver at tilgå ligger i en htaccess-password-beskyttet mappe, så må curl-funktionerne ikke tilgå den..

så jeg fjernede authentication i htaccess, og så virker lortet sgu!

erik jacobsen, du har lige reddet min ellers lidt hårde og tømmermændsramte lørdag!

olebole du kan jo smide et svar så får du de point som erikjacobsen ikke vil have :)
Avatar billede olebole Juniormester
19. september 2009 - 16:09 #11
- ellers tak  =)
Avatar billede eazye Nybegynder
19. september 2009 - 16:14 #12
..kan lige tilføje, at man kan beholde sit htaccess-authentication, hvis man lige gør sårn her:

curl_setopt($ch, CURLOPT_USERPWD, "username:password");
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

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