Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Require_once
Forum PHP.pl > Forum > Przedszkole
Gość_Andrzej_*
Witam Serdecznie!

Otóż mam taki problem. Używam phpnuke w wersji 7.8. Ale nie w tym rzecz. Mam pytanie. Jak dostosować sciezkę dostępu do pliku?

Podam najlepiej przykład

Pliki mainfile.php, header.php oraz footer.php znajdują się w katalogu głównym. W katalogu data/albums mam plik data.php i potrzebuję w nim zastosować następujące funkcje:

require_once('mainfile.php');
include('header.php');

Wiem, żę z takiego poziomu nie da się tego zrobić, gdyż odwołania muszą pochodzić z plików z katalogu głównego.

Jak sobie z tym poradzić?
mike
Skoro plik data.php jest w data/albums to musisz się cofnąć w ścieżkach do góry.

Najpierw wyjść z albums potem z data:

  1. <?php
  2.  
  3. require_once('../../mainfile.php');
  4. include( '../../header.php' ); 
  5.  
  6. ?>


O to chodziło?
Gość
O to chodziło, ale....ten sposób nie działa mad.gif

Nie śmiej się, ale siedzę na tym od 15 [SIC!!] i się cholera trochę php nauczyłęm już biggrin.gif
Gość
Jak tak zrobię to wyświetla mi się pusta strona:|
MagnuM
require_once('../mainfile.php');

lub

require_once('./mainfile.php');
Gość
Warning: main(../mainfile.php): failed to open stream: No such file or directory in /home/pedron/public_html/data/albums/sharks.php on line 3


Taki komunikat. Z tego wynika, że odnieszenie poprzez ../../ działa...tylko dlaczego jest pusta strona...nawet treści nie ma:|
mike
Cytat(Gość @ 5.08.2006, 23:07 ) *
Z tego wynika, że odnieszenie poprzez ../../ działa...tylko dlaczego jest pusta strona...nawet treści nie ma:|

Hmm, może jeszcze jakies błędy powstaly ale komunikatów nie widać.

Daj na początku głownego pliku, który uruchamiasz:
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors' , 1 );
  5.  
  6. ?>

Jeśli jakieś błędy się ukryły to teraz je zobaczymy.
Gość
Dodałem. STrona wyświetliła się normalnie. Żadnych błędów ani nic. Komunikatów niet mad.gif
Gość
BTW Na żadnym forum o php nuke nic na ten temat nie ma. Na jednym prześledziłem 300 stron:|
MagnuM
Nie ma cudów ;p Postaraj się tutaj jakoś obrazowo przedstawić strukturę tych trzech plików. W php jak coś nie działa, to znaczy że coś jest źle ;p (w dużej większości przypadków).
Gość
Wiem, ze jak coś nie działa to jest źle. Kiedyś siedziałem 3 godziny bo...brakowało kropki:)

Już przedstawiam:


Struktura katalogów:

http://michael-schenker.com = public_html

public_html/
public_html/mainfile.php
public_html/footer.php
public_html/header.php
public_html/data/
public_html/data/albums
public_html/data/albums/data.php


  1. <?php
  2. require_once('../../mainfile.php');
  3.  
  4. OpenTable();
  5. include( '../../header.php' ); 
  6. ?>
  7. <html>
  8.  
  9. Stąd usunąłem kod html, gdyż zajmował za dużo miejsca.
  10.  
  11. </html
  12.  
  13. <?
  14. CloseTable();
  15. include( '../../footer.php' ); //prawe bloki i stropka
  16. ?>



Dodam, że jak plik jest w katalogu głównym wszystko działa bez ../../, no to wiadome. Ale z przyczyn natury praktycznej, nie mogę wrzucić do roota 60 plików po potem się nie połapię:)
Gość
Tak dobrze?
MagnuM
Spróbuj z pojedyńczym '../'.
Czyli
  1. <?php
  2. require_once('../mainfile.php');
  3. ?>

Musi działać!

Z tym to zawsze jest dużo problemów. Spróój ewentualnie:
  1. <?php
  2. require_once('../public_html/mainfile.php');
  3. ?>

Chociaż nie wydaje mi się żeby to była przyczyna.

Popróbuj...
Gość
w obu przypadkach

Warning: main(../mainfile.php): failed to open stream: No such file or directory in /home/pedron/public_html/data/albums/sharks.php on line 4

Fatal error: main(): Failed opening required '../mainfile.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/pedron/public_html/data/albums/sharks.php on line 4


Już sam nie wiem:|


Cholera musi działać...a nie działa:|
MagnuM
Zrób w folderach public_html, data i albums plik o nazwie test.php i zależnie od tego w jakim folderze się znajduje daj im wartość równoznaczną z nazwą folderu. Później includuj go tak jak tamten plik. Dla testu. Sprawdzisz tymsamym do którego folderu schodzi nieszczęsne '../'.

Ot taki ręczny debug ;p biggrin.gif
Gość
Ale problem w tym, iż przy ../../ żadnego błedu nie było czyli to schodzi dobrze, błąd pewnie leży po innej stronie:|
MagnuM
To pododawaj echo z jakimś przykładoym tekstem do tych plików które includujesz. No nie wiem kombinuj...
Gość
Wszystko jest ok z tymi dwoma ../../, jak zrobiłem w podkatalogu i dałem jedno ../ tez wywaliło pustą stronę.

Sam już nie wiem. Nie można tego jeszcze jakoś inaczej zrobić/sprawdizć?
MagnuM
No przeciez podałem sposób jak sprawdzić czy poprawnie są includowane pliki... blinksmiley.gif
Gość
spoko. jak pisałem posta nie widziałem odpowiedzi:|
Gość
Jest coś podobnego z innymi plikami. Natomiast są tzw. moduły, ale nie są w głównym katalogu, ale mają w katalogu głównym plik modules, który includuje pliki, o których mowa. Mopże coś podobneog trzeba stworzyć do tego pliku modules??


plik modules:


  1. <?php
  2.  
  3.  
  4. define('MODULE_FILE', true);
  5. require_once("mainfile.php");
  6. $module = 1;
  7.  
  8. $name = trim($name);
  9. if (isset($name)) {
  10. if (eregi("http://", $name)) {
  11. die("Hi&nbsp;and&nbsp;Bye");
  12. }
  13. $modstring = strtolower($_SERVER['QUERY_STRING']);
  14. if (stripos_clone($modstring,"&user=") AND ($name=="Private_Messages" || $name=="Forums" || $name=="Members_List")) header("Location: index.php");
  15. global $nukeuser, $db, $prefix;
  16. $nukeuser = base64_decode($user);
  17. $nukeuser = addslashes($nukeuser);
  18. $result = $db->sql_query("SELECT active, view FROM ".$prefix."_modules WHERE title='$name'");
  19. $row = $db->sql_fetchrow($result);
  20. $mod_active = intval($row['active']);
  21. $view = intval($row['view']);
  22. if (($mod_active == 1) OR ($mod_active == 0 AND is_admin($admin))) {
  23. if (!isset($mop)) { $mop="modload"; }
  24. if (!isset($file)) { $file="index"; }
  25. if (ereg("..",$name) || ereg("..",$file) || ereg("..",$mop)) {
  26. echo "You are so cool...";
  27. } else {
  28. $ThemeSel = get_theme();
  29. if (file_exists("themes/$ThemeSel/modules/$name/".$file.".php")) {
  30. $modpath = "themes/$ThemeSel/";
  31. } else {
  32. $modpath = "";
  33. }
  34. if ($view == 0) {
  35. $modpath .= "modules/$name/".$file.".php";
  36. if (file_exists($modpath)) {
  37. include($modpath);
  38. } else {
  39. die ("Sorry, such file doesn't exist...");
  40. }
  41. } else if ($view == 1 AND (is_user($user) OR is_group($user, $name)) OR is_admin($admin)) {
  42. $modpath .= "modules/$name/".$file.".php";
  43. if (file_exists($modpath)) {
  44. include($modpath);
  45. } else {
  46. die ("Sorry, such file doesn't exist...");
  47. }
  48. } elseif ($view == 1 AND !is_user($user) AND !is_admin($admin)) {
  49. $pagetitle = "- "._ACCESSDENIED."";
  50. include("header.php");
  51. title("$sitename: "._ACCESSDENIED."");
  52. OpenTable();
  53. echo "<center><b>"._RESTRICTEDAREA."</b><br><br>"
  54. .""._MODULEUSERS."";
  55. $result2 = $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='$name'");
  56. $row2 = $db->sql_fetchrow($result2);
  57. if ($row2[mod_group] != 0) {
  58. $result3 = $db->sql_query("SELECT name FROM ".$prefix."_groups WHERE id='$row2[mod_group]'");
  59. $row3 = $db->sql_fetchrow($result3);
  60. echo ""._ADDITIONALYGRP.": <b>$row3[name]</b><br><br>";
  61. }
  62. echo ""._GOBACK."";
  63. CloseTable();
  64. include("footer.php");
  65. die();
  66. } else if ($view == 2 AND is_admin($admin)) {
  67. $modpath .= "modules/$name/".$file.".php";
  68. if (file_exists($modpath)) {
  69. include($modpath);
  70. } else {
  71. die ("Sorry, such file doesn't exist...");
  72. }
  73. } elseif ($view == 2 AND !is_admin($admin)) {
  74. $pagetitle = "- "._ACCESSDENIED."";
  75. include("header.php");
  76. title("$sitename: "._ACCESSDENIED."");
  77. OpenTable();
  78. echo "<center><b>"._RESTRICTEDAREA."</b><br><br>"
  79. .""._MODULESADMINS.""
  80. .""._GOBACK."";
  81. CloseTable();
  82. include("footer.php");
  83. die();
  84. } else if ($view == 3 AND paid()) {
  85. $modpath .= "modules/$name/$file.php";
  86. if (file_exists($modpath)) {
  87. include($modpath);
  88. } else {
  89. die ("Sorry, such file doesn't exist...");
  90. }
  91. } else {
  92. $pagetitle = "- "._ACCESSDENIED."";
  93. include("header.php");
  94. title("$sitename: "._ACCESSDENIED."");
  95. OpenTable();
  96. echo "<center><b>"._RESTRICTEDAREA."</b><br><br>"
  97. .""._MODULESSUBSCRIBER."";
  98. if ($subscription_url != "") {
  99. echo "<br>"._SUBHERE."";
  100. }
  101. echo "<br><br>"._GOBACK."";
  102. CloseTable();
  103. include("footer.php");
  104. die();
  105. }
  106. }
  107. } else {
  108. include("header.php");
  109. OpenTable();
  110. echo "<center>"._MODULENOTACTIVE."<br><br>"
  111. .""._GOBACK."</center>";
  112. CloseTable();
  113. include("footer.php");
  114. }
  115. } else {
  116. die ("Sorry, you can't access this file directly...");
  117. }
  118.  
  119. ?>



Nie mam pojęcia nawet jak się za to wziąć? Masz jakieś sugestie?
Gość
Nie wiem, męczę się z tym od rana. Za każdym razem coś mi nie gra...

Może uproszczę. Chodzi mi o przerpobienie pliku, który podałem wcześniej, aby odnosił się do odpowiedniego folderu "data". TYlko ie potrafię tego zrobić:(
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.