Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z relatywizacją dla include
Forum PHP.pl > Forum > PHP
dnarts
Witam !

To będzie naprawdę głupie pytanie (choć podobno takich nie ma) , ale postaram się was nie rozśmieszać zbyt długo . Dodam , że jestem zupełnie zielony w PHP ... no może jasnozielony

rzecz w tym , że mam do integrowania joomle i zewnętrznym systemem do biletów lotniczych . Rzecz w tym , że oni proponują iframe , ale wszystkie pliki są na moim serwerze , więc pokusiłem się o trochę lepszą integrację , jako że iframe sucks ...

najprościej (chyba) będzie includować poszczególne cześci ich silnika przez PHP include - tyle że ich system ma ustawione działanie w /irs/webroot/ i póki pliki do których wrzucam include są w tym folderze - wszystko jest piękne , gorzej gdy próbuję zaikludować to do pliki znajdującego się w głównym katalogu serwera - wtedy mam krzaczek pod tytułem :

Warning: main(../includes/init.php) [function.main]: failed to open stream: No such file or directory in /irs/webroot/tt2i.php on line 41

Fatal error: main() [function.require]: Failed opening required '../includes/init.php' (include_path='https://vuelo.pl/irs/webroot') in /irs/webroot/tt2i.php on line 41

wstawiony kod wygląda tak:
<?php
set_include_path('https://vuelo.pl/irs/webroot');
include "/irs/webroot/tt2i.php"
?>


Informacje dodatkowe:
- folder "includes" dla tego systemu jest pod adresem /irs/includes
- taki sam kod działa w folderze /irs/webroot
- nie mam wglądu w zawartość sporej części tt2i.php - jest zakodowany

Jakiego odwołania do ścieżki należałoby użyć by to działało poza owym folderem ?

michaJlS
>> set_include_path('https://vuelo.pl/irs/webroot');

a co to za wynalazek? zobacz jak się tego używa http://php.net/manual/en/function.set-include-path.php
dnarts
z desperacji chciałem mu podać całą scieżke , w międzyczasie było tam wszystko łącznie z ini_set('include_path','.:/://irs/includes/');

jak już pisałem - ja jestem total green - więc proszę z łopaty
michaJlS
Jak klientowi starcza iframe, to mu zrób iframe. Tak z dobrego serca Ci radzęwinksmiley.jpg bo jak już się uporasz z tymi incluedami, to dojdzie pytanie pt: a części drugiego systemu trzeba dołączać, i czemu to nie działa, mimo że je dołączam. A jeśli np joomla i tamto coś mają autoloadery, to podejrzewam, że też może ci to zapewnić fun na pare dni (ale mogę się mylićsmile.gif ).

ja bym robił coś takiego
  1. $PATH = '/ta/druga/sciezka/dodatkowa';
  2. set_include_path( get_include_path() . PATH_SEPARATOR. $PATH ) ;


co z resztą jest wspomniane w manualu.

dnarts
Niestety iframe w sumie odpada , nawet jeśli będzie to kosztem kilku dodatkowych dni pracy i setki głupich pytań zadanych na forum ....



kod:

<?php
$PATH = '.:/:usr/local/irs/includes/';
set_include_path( get_include_path() . PATH_SEPARATOR. $PATH ) ;
include "/irs/webroot/tt2i.php"
?>


generuje :

Warning: main(../includes/init.php) [function.main]: failed to open stream: No such file or directory in /irs/webroot/tt2i.php on line 41

Fatal error: main() [function.require]: Failed opening required '../includes/init.php' (include_path='.:/:/usr/local/php/pear5:.:/:usr/local//irs/includes/') in /irs/webroot/tt2i.php on line 41




Starałem się to robić wg. manuali z netu , ale jak już pisałem - jesteś dość zielony w programowaniu jakimkolwiek - więc nawet podstawowa składnia jest dla mnie problemem póki co.

Podstawowe pytanie - przy include_path, w stosunku do czego ta ścieżka ma być relatywna (plik wykonywany ? domena ? serwer ? ) oraz potem przy include - w stosunku do czego ma być relatywna ścieżka (to akurat chyba wobec pliku wykonywalnego)


plliz help
wookieb
1) Wszystkie integracje między serwisami nie robi się żadnymi i-frameami ani żadnymi ładowaniami ich strony w waszą stronę
2) Jeżeli nie możesz zaimplementować takiego samego mechanizmu jaki oni mają i w komunikacji użyć np SOAP-a (choć technik jest więcej) to czytaj punkt 3
3) Zrób coś w rodzaju programu partnerskiego, gdzie wy przekierowujecie użytkownika (bądź dajecie jakiś link) na ich stronę.

Każde z powyższych rozwiązań jest lepsze niż twoje wymienione.
W ostateczności gdybym miał wybierać mniejsze zło to tylko iframe.
dnarts
Cytat(wookieb @ 2.09.2010, 09:20:45 ) *
1) Wszystkie integracje między serwisami nie robi się żadnymi i-frameami ani żadnymi ładowaniami ich strony w waszą stronę
2) Jeżeli nie możesz zaimplementować takiego samego mechanizmu jaki oni mają i w komunikacji użyć np SOAP-a (choć technik jest więcej) to czytaj punkt 3
3) Zrób coś w rodzaju programu partnerskiego, gdzie wy przekierowujecie użytkownika (bądź dajecie jakiś link) na ich stronę.

Każde z powyższych rozwiązań jest lepsze niż twoje wymienione.
W ostateczności gdybym miał wybierać mniejsze zło to tylko iframe.


1) To nie do końca jest integracja "między" , gdyż obydwie strony stoją na jednej domenie , podobnie jak cały system obsługi rezerwacji - chodzi jedynie o metodę prezentacji tej treści 2 stopnie drzewa katalogów wyżej

2) Gdybym mógł , lub znał się na tym - nie prosiłbym o pomoc . Myślę , że rozwiązanie wcale nie jest takie trudne , to tylko ja jestem noobem w php

3) PP odpada - raczej wyklucza pojęcie "integracji"


No nic , dalej liczę na pomoc ...
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.