Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
PHP

[ROZWIĄZANE] [PHP] Dlaczego fopen zwraca "no such file or directory"?

php

Najlepsza odpowiedź G[o]Q, 23.11.2013 15:43

wyswietl sobie abc i sprawdz chmody katalogu ustaw np 666

Przejdź do postu


  • Zamknięty Temat jest zamknięty
6 odpowiedzi w tym temacie

#1 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Online

Napisano 22.11.2013 19:52

$abc = 'test/'.$wyraz[1]."+".$wyraz[2];
$cba = fopen($abc, "w");

Według php.net:
 
 

'w' Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

 
 
W takim razie dlaczego otrzymuje
 
 

<br />

<b>Warning</b>:  fopen(test/12345+playaz44) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in <b>/playaz44/rangi.php</b> on line <b>56</b><br />

 
??
 
$wyraz[1] i $wyraz[2] na pewno istnieją i mam sprawdzanie czy na pewno, $wyraz[1] jest sprawdzany dodatkowo przez is_numeric, nie ma również znaczenia czy plik ma rozszerzenie czy nie. Dodam też, że fopen działa mi normalnie w innej funkcji:

$nazwa = 'jakis_tam_folder/'.$wyraz[1];
$dane = 'jakies tam dane';
if(!file_exists($nazwa))
{
$plik = fopen($nazwa, 'w');
fputs($plik, $dane);
fclose($plik);
}

Skoro działa z jedną zmienną, dlaczego nie działa z dwoma?


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#2 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 22.11.2013 20:09

Zrób małego debuga typu:
$plik = fopen("d*pa.txt", 'w');
fputs($plik, "d*pa");
fclose($plik);
I sprawdź czy Ci zadziała. Jeżeli nie; pokombinuj z chmodem pliku wykonywalnego. Jeżeli zadziała; sprawdź chmod folderu; do którego chcesz zapisać.
Jeżeli wszystko zawiedzie; spróbuj dać x+.
  • +
  • -
  • 0

#3 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Online

Napisano 22.11.2013 21:40

Nie działa mi twój sposób, teoretycznie pozbyłem się problemu tworząc pseudo-funkcje bo nie mogę w jednej funkcji operować na dwóch plikach, pytanie dlaczego?


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#4 Gh0st

    :)

  • Power User

Reputacja: 852
Czempion

  • Postów:920
  • GG:
  • Imię:Tomek
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 23.11.2013 15:21

if(!file_exists($nazwa))
{
$plik = fopen($nazwa, 'w');
fputs($plik, $dane);
fclose($plik);
}

Jeśli plik nie istnieje to go otwierasz? :) No to nieźle kolego.

@down DarkGL Faktycznie :)

 

Twój błąd oznacza że plik nie istnieje, więcej chyba nic nie trzeba dodawać.


Użytkownik Gh0st edytował ten post 23.11.2013 15:56

  • +
  • -
  • 0

#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.11.2013 15:39

Ghost http://php.net/manua...ction.fopen.php

 

Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

 

 


  • +
  • -
  • 1

#6 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 23.11.2013 15:43   Najlepsza odpowiedź

wyswietl sobie abc i sprawdz chmody katalogu ustaw np 666


  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#7 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Online

Napisano 24.11.2013 22:46

wyswietl sobie abc i sprawdz chmody katalogu ustaw np 666

 

No właśnie, w wolnej chwili sprawdziłem i faktycznie chmody, tylko musiałem dodać tymczasową ich zmiane i później powrót do poprzednich (takie wymaganie mam) :) zapomniało mi się o tym :D


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.





Również z jednym lub większą ilością słów kluczowych: php

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych