Webbutveckling PHP - Servern förbjuder skrivning till filer?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2010

Webbutveckling PHP - Servern förbjuder skrivning till filer?

Jag har ett enkelt PHP-skript som skriver en POST-parameter till en fil:

<?php
session_start();

if(isset($_SESSION['username'])) {
$message = trim($_POST['message']);
if(strlen($message) > 0) {
$chatlog = fopen("../chatlog.html", "a");
fwrite($chatlog, "<div>{$_SESSION['username']}: {$message}</div>");
fclose($chatlog);
}
}
else echo "failed";

Det fungerar felfritt när jag kör det på localhost med XAMPP, men när jag laddar upp det till webbservern så lyckas jag inte få skriptet att skriva till filen. Kan det vara så att webbservern (som för övrigt ägs av min skola) förbjuder skrivning till filer, eller är det troligtvis något annat fel?

ASUS Maximus VI Gene - i7 4770K - Sapphire HD 7970 - 16GB Corsair DDR3 1600Mhz - Samsung 840 Evo 500GB, Western Digital Red 3TB - Corsair AX760

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009

filen den öppnar/skapar kanske läggs som skrivskyddad och måste cmoddas om?

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2010
Skrivet av Christley:

filen den öppnar/skapar kanske läggs som skrivskyddad och måste cmoddas om?

Jag vet inte vad "cmoddas" innebär, men filen i fråga har jag skapat själv och laddat upp tillsammans med skriptet. Det enda den innehåller är div-element som har skrivits in i den med skriptet.

ASUS Maximus VI Gene - i7 4770K - Sapphire HD 7970 - 16GB Corsair DDR3 1600Mhz - Samsung 840 Evo 500GB, Western Digital Red 3TB - Corsair AX760

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009
Skrivet av Murloc:

Jag vet inte vad "cmoddas" innebär, men filen i fråga har jag skapat själv och laddat upp tillsammans med skriptet. Det enda den innehåller är div-element som har skrivits in i den med skriptet.

vet inte hur den ska se ut eller hur den ser ut, men http://www.maketecheasier.com/file-permissions-what-does-chmo...

jag hade gissat på att den är skrivskyddad. testa typ:
$fh = fopen($path, 'r') or die('Could not open file');

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2010
Skrivet av Christley:

vet inte hur den ska se ut eller hur den ser ut, men http://www.maketecheasier.com/file-permissions-what-does-chmo...

jag hade gissat på att den är skrivskyddad. testa typ:
$fh = fopen($path, 'r') or die('Could not open file');

Jag kopierade din kodrad och ändrade argumentet 'r' till 'a' så den är i skrivläge:
$fh = fopen("log.html", 'a') or die('Could not open file');

'die' triggades och 'Could not open file' skrevs ut på sidan. Alltså borde det vara som jag trodde och servern tillåter inte att jag skriver till filer. Så vitt jag vet är det enda jag kan göra på skolans server att ladda upp filer, har ingen kontrollpanel eller liknande som jag skulle ha hos ett webbhotell. Är det här något som jag kan åtgärda med så pass begränsade rättigheter?

ASUS Maximus VI Gene - i7 4770K - Sapphire HD 7970 - 16GB Corsair DDR3 1600Mhz - Samsung 840 Evo 500GB, Western Digital Red 3TB - Corsair AX760

Trädvy Permalänk
Medlem
Plats
/dev/null
Registrerad
Dec 2009
Skrivet av Murloc:

Jag kopierade din kodrad och ändrade argumentet 'r' till 'a' så den är i skrivläge:
$fh = fopen("log.html", 'a') or die('Could not open file');

'die' triggades och 'Could not open file' skrevs ut på sidan. Alltså borde det vara som jag trodde och servern tillåter inte att jag skriver till filer. Så vitt jag vet är det enda jag kan göra på skolans server att ladda upp filer, har ingen kontrollpanel eller liknande som jag skulle ha hos ett webbhotell. Är det här något som jag kan åtgärda med så pass begränsade rättigheter?

Förutsätter att din server är en debian/ubuntu maskin.

Logga in på servern med hjälp av SSH och använd kommandot chmod för att ändra rättigheter på filen

Main dator: i5 750 4Ghz, GTX 770 4GB, Intel SSD 80GB, 8GB Ram
Servern: Core 2 Duo, 4GB Ram, 4x2TB Lagring, Ubuntu Server 12.04