Gå til innhold

Kan ikke skrive til fil på Linux server


Anbefalte innlegg

Jeg prøver å sette opp en elektronisk kalender i heimen som skal kunne brukes av flere personer på ulike maskiner. Jeg har brukt MS Outlook på jobben og tenkte meg noe tilsvarende for å planlegge aktiviteter, planlegge innkjøp av mat m.m. Konseptet er å ha en .ics(iCal) fil liggende på hjemmenettverket som kan leses og endres av alle. Jeg har installert Mozilla Sunbird på min Win7 PC og lagt en ics-fil i /var/www/html på en Ubuntu 14.04 server som kjører Apache2. Jeg har gitt fila rw til alle. Sunbird kan lese ics-fila men jeg får "Modification_Failed" når jeg prøver å lagre endringer. Hvis jeg har ics-fila på min arbeidsstasjon så funker det greit. Jeg har også HTML-filer i samma mappa og de går det greit å åpne med nettleseren.

Jeg er ingen kløpper på Linux så jeg vet ikke hvor det stopper opp, har sett på aktivitetsloggen til Apache2 og der uten å bli så mye klokere:

 

"GET /kalender.ics HTTP/1.1" 200 1094 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"PUT /kalender.ics HTTP/1.1" 405 565 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"GET /kalender.ics HTTP/1.1" 304 179 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"GET /kalender.ics HTTP/1.1" 304 180 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"GET /kalender.ics HTTP/1.1" 200 1094 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"PUT /kalender.ics HTTP/1.1" 405 565 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"GET /kalender.ics HTTP/1.1" 304 179 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

"GET /kalender.ics HTTP/1.1" 304 180 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091211 Sunbird/1.0b1"

 

Gode råd mottas med takk.

Lenke til kommentar
Videoannonse
Annonse

Jeg kjørte grep -Ri put /etc/apache2 og fikk ei liste fra ymse filer men det var for det meste at "put" inngår i "output filter" og ikke noe relatert til metoden PUT.

 

Her er det jeg antar er det mest relevante fra apache2.conf:

 

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>

<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>

 

Gjør det noe forskjell om jeg legger fila i /usr/share og påvirker det adressen til fila ?

Lenke til kommentar

Jeg har Googlet PUT og 405 og fant noe som kanskje er forklaringen på mitt problem:

 

Re: Issue with HTTP methods (DELETE,PUT) not being accepted (returning 405 Method not allowed)
In reply to this post by Scott Bigelow
I ended up figuring this out and I thought I would respond to my original message to let anyone know who stumbles on this what the problem was.

Apache does not want to send arbitrary HTTP request methods to regular files. Sending a "DELETE" or "PUT" to a regular file in a document root will end up with a "405 Method not allowed", even if the method is "Allow"d (e.g. "Allow from all"... We're kind of overloading the term "Allowed" here!). That is, unless you're using dav/dav_fs, which isn't what I'm trying to do here. If the document being processed is a script, like PHP, Apache is normally willing to forward the request to the file with the REQUEST_METHOD populated.

The issue comes down to how Apache integrates with PHP. In my case, under Ubuntu 12.04, there were two packages:

libapache2-mod-php5 and libapache2-mod-php5filter

I had accidentally installed the "libapache2-mod-php5filter" package, which integrates with Apache using the following lines:

SetInputFilter PHP
SetOutputFilter PHP

These functions are specifically geared toward GET (Output) & POST (Input) operations and don't instruct Apache to pass all request methods to PHP. For all other request methods, Apache treats the .php file as a standard file. I uninstalled libapache2-mod-php5filter and installed libapache2-mod-php5, which integrates with:

<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>

The SetHandler accepts all request methods, including the PUT & DELETE I was trying to get working. Hope this helps someone out there.
Slik jeg forstår det må jeg bytte til libapache2-mod-php5 hvis jeg har libapache2-mod-php5filter
Lenke til kommentar

Jeg laget en ny mappe /var/www/html/WebDAV og ga alle rw rettigheter

sudo a2enmod dav_fs

La inn følgende i apache2.conf:

<Directory /var/www/html/WebDAV/>

DAV on

<LimitExcept GET PUT>

Order allow,deny

Allow from all

</LimitExcept>

</Directory>

 

Problemet er det samme, kan lese fila men ikke endre den.

Lenke til kommentar

hvordan er rettighetene på filsystemet da? Har apache lov å skrive til filen som du prøver å endre på?

 

edit: nvm, ser nå du har gitt rw til alle

 

edit2: Kjører ubuntu selinux? I såfall kan det hende denne ikke lar apache skrive til filene.

Endret av trrunde
Lenke til kommentar

Jeg ga opp å bruke Apache2 og har installert Radicale som er laget for å gjøre det jeg ønsker. Men det er fortsatt ingen success. Sunbird oppfører seg som om alt fungerer normalt uten noen feilmeldinger, det er bare det at ingenting fra ics-fila hentes og når jeg lagrer noe så havner det ikke i fila. I loggen til Radicale registreres det HTTP GET og PUT og jeg har åpnet for tilgang for alle og ingen autentisering.

Lenke til kommentar

Det er sikkert mulig, jeg har ikke prøvd Google Calendar men er i utgangspunktet kritisk til Google fordi jeg synes de er vel aggressive i deres konsept for skreddersydd reklame. Jeg bruker Googles søkemotor og har Android telefon men holder meg ellers unna Google. Jeg bor på et sted med usikker internettforbindelse så jeg trenger en løsning som fungerer uten.

 

Jeg har en Samsung Galaxy 3 hvor jeg bruker kalenderen S Planner og ICalSync2. Det rare er at når jeg legger inn en hendelse fra Win7/Sunbird så vises denne på mobilen men ikke omvendt. Det er også noe rart med den felles ics-fila på Ubuntuserveren som de leser og skriver til for den inneholder ikke de hendelsene jeg legger inn så jeg aner ikke hvor de er lagret.

Lenke til kommentar
  • 2 uker senere...

Her brukes Owncloud til kalender med Caldav mellom Thunderbird og Android. Fungerer veldig bra.

Takk for tipset, jeg så raskt over installasjonsveiviseren for Owncloud og må nok melde pass, det blir litt for mye å installere og ha oversikt over for meg.

Lenke til kommentar
  • 4 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...