Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> File not exists..., ... mimo, że plik istnieje :/
Virti
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

Ostrzeżenie: (0%)
-----


Witam ponownie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Eh... od błędu, do błędu.
Tym razem problem polega na znikającym pliku Config.php

Sytuacja jest taka: na początku includuję plik "config.php", nie wywala żadnych błędów, jednym słowem wszystko jest cacy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
pod koniec, plik config.php zostaje zaktualizowany (przynajmniej ma zostać), ale funkcja file_exists() zwraca FALSE :/

Mógłby mi ktoś wytłumaczyć co to może być? Dodam, że kożystam z serwera Xampp w wersji na linuxa (mandriva '07 PP), chmody ustawiłem w MC na 107777 (w akcie desperacji zaznaczyłem tam wszystko (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )

EDIT: przykładowu kod:

  1. <?php
  2. class Config{
  3. private $__c;
  4. private $md5;
  5.  
  6. public $save = true;
  7. public $backup = true;
  8.  
  9. /**
  10.  * Konstruktor...
  11.  *
  12.  */
  13. function __construct(){
  14. $this -> LoadData();
  15. $this -> md5 = $this -> genMd5();
  16. }
  17.  
  18. /**
  19.  * Ładuje zmienne konfiguracyjne
  20.  *
  21.  */
  22. private function LoadData(){
  23. include('config.php');
  24.  
  25. if(isset($_CONFIG)){
  26. foreach($_CONFIG as $var => $val){
  27. $this -> __c[$var] = $val;
  28. }
  29. }
  30. }
  31.  
  32. /**
  33.  * Generujw klucz md5
  34.  *
  35.  * @return string
  36.  */
  37. private function genMd5(){
  38. return md5(serialize($this -> __c));
  39. }
  40.  
  41. /**
  42.  * Sprawdza sumę kontrolną konfiguracji i w razie potrzeby zapisuje nową
  43.  *
  44.  */
  45. private function checkConfig(){
  46. //sztuczna zmiana sumy kontrolnej
  47. $this -> md5 = 'as';
  48.  
  49. if($this -> md5 !== $this -> genMd5() AND $this -> save === true){
  50. $this -> _debug('save');
  51. $this -> saveConfig();
  52. } else {
  53. echo 'NIE SAVEEE';
  54. }
  55. }
  56.  
  57. private function saveConfig(){
  58. var_dump(file_exists('config.php'));
  59. }
  60.  
  61. /**
  62.  * Destruktor...
  63.  *
  64.  */
  65. function __destruct(){
  66. $this -> checkConfig();
  67. }
  68.  
  69. /**
  70.  * Obsługa debugowania dla konfiguracji
  71.  *
  72.  */
  73. function _debug(){
  74.  
  75. }
  76. }
  77. ?>


w rezultacie dostaję (z tego var_dump...):
Cytat
bool(false)


EDIT: ustawiałem również chmod 0777 poprzez konsolę (txt, jako root oczywiście) co również nic nie dało :/

Ten post edytował Virti 17.12.2006, 18:11:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Jesteś użytkownikiem Linuxa i nie dbasz o wielkość liter?

config.php != Config.php
Go to the top of the page
+Quote Post
Virti
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

Ostrzeżenie: (0%)
-----


1. jestem początkującym userem linuxa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
2. faktycznie, popełniłem taki błąd, ale po poprawie (edytowałem też post wyżej...) nadal mam bool(false)

EDIT! (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
ok, w manualu php w prawdzie nic nie ma na ten temat, jednak (conajmniej) jeden użytkownik miał ten sam problem, wymyślił on również rozwiązanie:
  1. <?php
  2. function file_exists_2gb($filename) {
  3.  system("test -f $filename", $rval);
  4.  return ($rval == 0);
  5.  }
  6. ?>


co o tym myślicie? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) testowałem to, owszem działa. Mam tylko kilka pytań:
1. Jak będzie się to sprawdzało na systemach NIE uniksowych itp... (Winzgroza)
2. Jest sposób aby napisać coś podobnego do fopen (fopen również nawala :/ pokazuje "brak dostępu" mimo, że chmod jest na 0777 a skrypt jest uruchamiany z konta właściciela tego pliku)
3. Co jeśli php będzie pracowało na safe_mode? W tym wypadku (http://pl.php.net/manual/pl/features.safe-mode.php) system(); jest ograniczony... ;/

Z góry dzięki za odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Virti 19.12.2006, 17:00:56
Go to the top of the page
+Quote Post
Pucy
post
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 8.05.2006

Ostrzeżenie: (0%)
-----


Tes bym chcial znac odpowiedz na to pytanie.

Ja mam tak ze wykonuje pewna okreslona liczbe postow... ktora sprawdza plik swtorzony przy 1 poscie... Raz na jakis czas w momencie np. 10/15 posta wynika ze plik nie istnieje? Co ciekawe... funckja zwraca czyto file_exists czy fopen ze nie istnieje plik ale on jest na serwerze... zaraz po informacji o nieistnieniu daje DIE(); wiec nie moze byc stworzony ten plik w zaden sposob...

Inna dziwna rzecza jest to ze dzieje sie tak losowo, czasem przy kilkunastu turach jest ok, a czasami w polowie mi wykrzacza... moze nazwa pliku jest problemem? Albo iloscp likow tworzonych w katalogu?

plik sklada sie ze stringu i kawalka wyjscia z md5()
Go to the top of the page
+Quote Post
bendi
post
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


clearstatcache" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:28