Avatar billede larsroan Nybegynder
30. maj 2006 - 11:03 Der er 5 kommentarer

Permission denied ved bruk av fopen - og skrive til en xml

I et forsøk på å opprette en web-side med dagens valutakurser fra  The European Central Bank, ECB, lykkes jeg ikke 100%.  Her er siden;
http://home.no.net/laroald/currency2.php

Og her er kobling til php-koden som jeg forsøker å benytte:
http://ireland.wellho.net/solutions/php-using-current-exchange-rates-on-a-web-page.html?setfontgroup=3

Min webside fungerer - men hele tiden en feilmelding; 
Warning: fopen(erates.xml): failed to open stream: Permission denied in currency2.php on line 54:
$fh=fopen($cache,"w");
Like foran har jeg definert    $cache = "erates.xml";    - som jeg har lagt i samme mappe.

Når jeg benytter min egen server fungerer det hele, men  ikke på ekstern server.  Kan ikke dette tyde på at php.ini er satt opp i "Safe Mode"?  Jfr php.help-file;  .."The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren't very realistic, many people, especially ISP's, use safe mode for now.
.......When a script tries to open a file with, for example, fopen() or gzopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to open it.

Jeg har forsøkt å legge erates.xml i mappen /include med koden
$cache = "$_SERVER[DOCUMENT_ROOT]laroald/include/erates.xml";
men heller ikke det fungerer - samme feilmeldingen: Permission denied.  Kan det ha med at erates.xml ikke er satt med korrekt properties?  At erates.xml ikke er definert for å kunne skrive til? Som hjelpe-filen sier vedrørende "fopen": "The file must be accessible to PHP, so you need to ensure that the file access permissions allow this access".  I så fall; hvordan endrer jeg denne definisjonen for erates.xml?

For dere som kjenner xml:  Kan det hele forklares med xml-encodingen?
<?xml version="1.0" encoding="UTF-8"?>.  Jeg har forsøkt å endre encoding til  "windows-1252".  Da forsvinner feilmeldingen foran, men i stedet benyttes ikke dagens kurser fra ECB, men de gamle dataene hentes fra erates.xml hele tiden.

Siden dette er en "tom" hjemmeside kan de som er interessert med FTP få tilgang til filene gjennom:
Hostname: ftp.start.no
UserId: laroald
password: laroald

Takk for hjelpen
Hilsen Lars Roald
Avatar billede coderdk Praktikant
30. maj 2006 - 14:01 #1
webserveren skal have rettigheder til at skrive i den mappe. Forbind til din FTP og sæt mode 777 på den mappe, så vil du sikkert kunne få det til at virke...
Avatar billede larsroan Nybegynder
30. maj 2006 - 18:13 #2
Takk for hjelpen!
Ja, det høres logisk ut - at det kan ha med rettighet til å skrive i mappen.

Når jeg kobler til med WS_FTP LE, og høyreklikket "/public_html" så fikk jeg opp "chmode UNIX" hvor jeg så krysset av for både >Read, >Write, og >Execute  for alle de tre grupper av brukere og klikket >OK  og jeg fikk opp meldingen >chmode777.  Dette har jeg gjort for både root-folder "/public_html"    og også subfolder  "/include"  Dermed er vel begge mappene definert til "mode 777" - men allikevel fungerer det ikke.  Fortsatt to feilmeldinger:
Warning: fopen(erates.xml): failed to open stream: Permission denied in /mnt/home2/l/la/laroald/public_html/currency2.php on line 54

Warning: fputs(): supplied argument is not a valid stream resource in /mnt/home2/l/la/laroald/public_html/currency2.php on line 56

Kan det ha noe med min kode for filen erates.xml?  Jfr  skal kode være
$cache = "$_SERVER[DOCUMENT_ROOT]/../include/erates.xml";
Denne kode fungerer ikke.  Jeg har her forsøkt med mange muligheter - for å henvise til subfolder  /include,    bl.a.:
$cache = "$_SERVER[DOCUMENT_ROOT]laroald/include/erates.xml"; 
Men det fungerer ikke.  Nå har jeg erates.xml i samme folder som currency2.php.  Det kan vel ikke være årsaken til at det hele ikke fungerer?


For dere som kjenner xml:  Kan det hele forklares med xml-encodingen? Første linje i erates.xml har følgende kode:
<?xml version="1.0" encoding="UTF-8"?>. 
Jeg har forsøkt å endre encoding til  "windows-1252".  Da forsvinner feilmeldingen foran, men i stedet benyttes ikke dagens kurser fra ECB, men de gamle dataene hentes fra erates.xml hele tiden.
Uansett; takk for hjelpen!
Avatar billede larsroan Nybegynder
01. juni 2006 - 15:55 #3
Takk for hjelpen Coderdk!
Det var filen erates.xml som måtte ha mode 777 - ikke bare mappen.  Så nå fungerer det hele.
Avatar billede coderdk Praktikant
01. juni 2006 - 22:56 #4
Det var så lidt :) Godt at det virker!
Avatar billede coderdk Praktikant
01. juni 2006 - 22:56 #5
Hmm du kan få et svar, hvis du vil :)
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