PDA

Zobacz pełną wersję : Instalacja Joomla 1.6 w podkatalogu- Empty delimiter w pliku path.php



Ciupaga
30-12-2010, 14:36
Miałem problem z zainstalowaniem Joomla 1.6 z adresu:
http://nowa_domena.pl/installation/index.php

Zrzut obrazu (http://ifotos.pl/zobacz/joomla1_qqwpxr.jpg/)

Musiałem zainstalować Joomlę z adresu:
http://moj_serwer.home.pl/podkatalog/installation/index.php

Instalacja przebiegła sprawnie i prawidłowo, niestety nie działały linki np. do kategorii, sitemap, ... Pobrałem więc plik configuration.php zmieniając uprzednio mu prawa na 666 i zmieniłem w nim część kodu:

public $live_site = '';

na

public $live_site = 'http://nowa_domena.pl/';

Operacja nie przyniosła pożądanego rezultatu. Usunąłem wszystkie pliki z podkatalogu i przesłałem pliki ponownie na serwer. Wróciłem zatem do punktu ponownej instalacji. Teraz pokazuje mi się ta sama informacja, co za pierwszym razem podczas instalacji z adresu http://nowa_domena.pl/installation/index.php:
Warning: strpos() [function.strpos]: Empty delimiter in /libraries/joomla/filesystem/path.php on line 148

oto część kodu w pliku path.php, na którą wskazuje błąd:

public static function check($path, $ds = DIRECTORY_SEPARATOR)
{
if (strpos($path, '..') !== false) {
JError::raiseError(20, 'JPath::check Use of relative paths not permitted'); // don't translate
jexit();
}

$path = JPath::clean($path);
if (strpos($path, JPath::clean(JPATH_ROOT)) !== 0) {
JError::raiseError(20, 'JPath::check Snooping out of bounds @ '.$path); // don't translate
jexit();
}

return $path;
}

Linię
if (strpos($path, JPath::clean(JPATH_ROOT)) !== 0) {
zmieniałem różnorako- pomogła częściowo zmiana na:
if (strpos($path, JPath::clean(JPATH_ROOT)) !== false) {

Pojawiło się okno instalatora, jednak ostrzeżenie nie znikło- u góry nadal widnieje informacja:
Warning: strpos() [function.strpos]: Empty delimiter in /libraries/joomla/filesystem/path.php on line 148

Zrzut obrazu (http://ifotos.pl/zobacz/joomla1_qqeqar.jpg/)

palyga007
30-12-2010, 21:02
1. Joomla jest w fazie RC (no chyba, że coś przespałem).
2. Z tego co wiem, póki nie wyjdzie wersja Stable nie będzie udzielana pomoc na forum (przecież nie ma działu Joomla 1.6 )
3. Ostrzeżenie nie ma nic wspólego z Joomla! a z ustawieniami serwera. Temat wałkowany setki razy.

Ciupaga
30-12-2010, 22:12
1. Do tego to i ja doszedłem (może informacja o takim ostrzeżeniu i rozwiązanie jego może się tyczyć zarówno wersji RC jak i Stable, a odpowiedź przydać teraz i w przyszłości?)
2. Nie wiedziałem (albo wiesz, albo nie wiesz...- jeśli nie wiesz, a zdaje Ci się, to nie pisz. Pamiętaj, iż jest wielu chętnych do udzielenia pomocy)
3. Dokładnie ten problem Home.pl skwitowało odwrotnie! Nim napisałem na forum, uzyskałem uprzednio odpowiedź, iż to leży po stronie Joomli. To tam uzyskałem informację o zmianie linii w pliku configuration.php
public $live_site = '';
na
public $live_site = 'http://nowa_domena.pl/';

Skoro nie znam odpowiedzi i jedynym niekompletnym rozwiązaniem, jakie udało mi się znaleźć, jest zmiana opisanej wyżej linii na if (strpos($path, JPath::clean(JPATH_ROOT)) !== false) {
Skoro chcę przetestować wersję RC i Home.pl nie znalazło rozwiązania, to pozostaje mi chyba zwrócenie się z problemem na forum Joomli, czyż nie?

Jeśli ktoś wie w czym leży problem, ponieważ chciałbym sobie przetestować Joomlę na mojej nowej (przeznaczonej do testów) domenie...- proszę o informację, pomoc.

Jeśli temat założyłem w niewłaściwym dziale i nie może tutaj pozostać...- proszę o jego przeniesienie we właściwe miejsce (przepraszam).

palyga007
30-12-2010, 22:42
Ech...
Czy podczas instalacji RC na pewno wszystkie światełka świeciły na zielono?

Ciupaga
30-12-2010, 22:52
Więc:

a)
instalacja, która przebiegła wydawało by się prawidłowo za pierwszym razem z adresu:
http://moj_serwer.home.pl/podkatalog/installation/index.php
oczywiście miała wszystkie światełka na zielono

b)
instalacja, której podejmuję się tym razem z adersu:
http://nowa_domena.pl/installation/index.php
nie ma żadnych światełek, gdyż jak widać to na załączonym powyżej zrzucie, nie przebrnęła jeszcze pierwszego kroku.

palyga007
30-12-2010, 23:01
display errors było na off?

Ciupaga
30-12-2010, 23:02
Zawartość pliku php.ini umieszczonego w podkatalogu z Joomla, to:
display_errors = Off
display_startup_errors = Off

Przy 5 aktywnych stronach działających w oparciu o Joomla 1.5 - każda z nich umieszczona jest w podkatalogu serwera Home.pl - nie miałem dotąd takiego problemu (każda ma ten sam wpis w pliku php.ini).

palyga007
30-12-2010, 23:23
Co ja Ci mogę powiedzieć...
Tylko tyle że u mnie na localhost działa. J! 1.6 zacząłem testować od wczesnych wersji Beta. Nie za bardzo mam chęć i ochotę ładować to na zewnętrzny serwer ale jestem na 99% pewny, że będzie działać również tam.
Nie od dzisiaj wiadomo, że serwery Home nie są "przyjazne" dla Joomla!. Skoro masz wyłączone wyświetlanie błędów to błąd ten nie powinien się pojawić.
Wg mnie wina home.

Ciupaga
31-12-2010, 00:37
Pospieszyłem się z postem, podając rozwiązanie, które okazało się nietrafne...
Napiszę więc, iż osobiście wolę testować zawsze na serwerze ("na żywo") i w tym celu posiadam aktywną domenę testową.

tenbartek
05-01-2011, 13:58
Ciupaga - nie jesteś sam z problemem... na 99%

kostia
11-01-2011, 16:45
Pobrałem dziś wersję stabilną Joomla 1.6 i przy instalacji znów ten sam problem, co kolega opisał
Warning: strpos() [function.strpos]: Empty delimiter in /libraries/joomla/filesystem/path.php on line 148

Mam stronę na home.pl

Jac
11-01-2011, 17:30
kostia, pierwsze co powinieneś zrobić, to zwrócić się do pomocy technicznej home.pl.
Opisz problem, który u Ciebie wystąpił. Płacisz za hosting i masz prawo korzystać ze wsparcia rzeczonej firmy.
Dopiero jak nie znajdziesz pomocy i rozwiązania problemu po stronie hostingu, pytaj na forum.

pyziak
11-01-2011, 18:28
Informacja od Pomocy z Home.pl

Niestety nie wiem czym jest spowodowany ten komunikat

kostia
11-01-2011, 21:08
Jac, a czytałeś co napisał kolega Ciupaga w #3? Zwrócił się o pomoc do home.pl i skwitowali to tym, że wina leży po stronie oprogramowania. Ponoć obowiązuje tu zasada: Najpierw poszukaj i poczytaj :P

pyziak
11-01-2011, 22:47
Więc sprawa wygląda następująco: założyłem sobie testowo konto na home.pl i wrzuciłem 1.6 do głównego katalogu, oczywiście od razu przy próbie instalacji pojawił się błąd:

Warning: strpos() [function.strpos]: Empty delimiter in/libraries/joomla/filesystem/path.php on line 148 jak już wcześniej pisałem pomoc z home.pl rozłożyła ręce i powiedziała, że nie wie co jest grane. Generalnie osobiście twierdzę że wina jest po stronie konfiguracji ich serwerów, ale aby zainstalować wersję 1.6 należy w pliku : /libraries/joomla/filesystem/path.php dopisać :


if(empty($path)) {
$path = '/';
}dodałem to w lini 170, po skończeniu instalacji uzupełniłem wpis public $live_site = ''; w pliku configuration.php, oraz w PA w konfiguracji ogólnej wyłączyłem Search Engine Friendly URLs.
Oczywiście nie daje żadnej gwarancji że wszystko jest w/g sztuki, ale testowałem trochę i wszystko działa.

---edit--
zapomniałem http://joomla16.home.pl

tomeekm
11-01-2011, 23:30
Hm ciekawa sprawa, ja założyłem konto testowe na jednym z darmowych hostingów (nie wiem czy można podać jego nazwę) i tam instalacja Joomla! 1.6 przebiegła bez żadnych problemów :)

pyziak
11-01-2011, 23:35
@tomeekm jak byś nie doczytał z jakiś względów całego postu ( czy to zmęczenie, czy lenistwo) to ten cały post tyczy się instalacji na home.pl , na kilku innych serwerach też nie miałem najmniejszych problemów.

tomeekm
11-01-2011, 23:40
@pyziak czytałem całość jednak chyba godzina już mi nie sprzyja... Sorki za zamieszanie. pzdr :)

kostia
13-01-2011, 17:16
Pyziak, dziękuję za pomoc i tyle pracy włożonej, ale proszę o dalsza podpowiedź. U mnie pliku path.php, którego tu mamy fragment:


if (empty($path)) {
$path = JPATH_ROOT;
} else {
// Remove double slashes and backslahses and convert all slashes and backslashes to DS
$path = preg_replace('#[/\\\\]+#', $ds, $path);
}
Pajączek, wskazuje że 170 linia wypada na tę z warunkiem else. I mam takie pytanie czy ten kod, który podałeś wstawić przednawiasem klamrowym stojącym przed else czy po tym drugim?

pyziak
13-01-2011, 22:02
Poniżej zmodyfikowany plik, oczywiście dla bezpieczeństwa proszę zachować swój oryginalny
3480

kostia
13-01-2011, 22:32
Dzięki Pyziak :up:

Ciupaga
14-01-2011, 12:43
Gdyby zamieszczony plik kiedyś nie był dostępny oraz żeby w takim wypadku użytkownicy nie mieli problemu, jak kostia... napiszę, iż właśnie w moim przypadku:

przyczyną niedogodności jest błędnie pobierana ścieżka w linii 169 pliku '../libraries/joomla/filesystem/path.php':

Wspomniany fragment kodu wyglądał następująco:

if (empty($path)) {
$path = JPATH_ROOT;
}

należy zmienić na (jak pisał wielki pyziak)

if (empty($path)) {
$path = "/";
}


Funkcjonuje rozwiązanie podane przez pyziak'a, które mówi o wyłączeniu funkcji Search Engine Friendly URLs.

Nadal jednak pozostaje nierozwiązany problem niedziałających poprawnie odnośników - dla tych, którzy chcą mieć przyjazne adresy:
zaznaczenie Search Engine Friendly URLs oraz Use Apache mod_rewrite po uprzedniej zmianie pliku htaccess.txt na .htacces - nie rozwiązuje błędu np w:
http://moja_domena.pl/park-links, po kliknięciu na odnośniki:
Baw Baw National Park, Kakadu, Pulu Keeling, jak i innych adresach odwołujących się do weblinks...

Chciałbym dodatkowo podziękować wszystkim za zaangażowanie i poświęcony czas w poczynieniu milowego kroku naprzód. Pozdrawiam!

darek29011976
23-01-2011, 10:11
Witam

Mam także serwer na Home.pl i występuje ten sam problem. Podmieniłem więc plik wrzucony przez Pyziaka i o niebo działa... Dzięki Pyziak

Ciupaga
24-01-2011, 16:50
Ponieważ mamy już stabilną wersję Joomla 1.6 napisałem nowy temat "Proste adresy w Joomla 1.6 - weblinks" w dziale dla wersji Joomla 1.6 i proszę o kontynuowanie tego tematu właśnie tam.

Proste adresy w Joomla 1.6 - weblinks (http://forum.joomla.pl/showthread.php?48306-Proste-adresy-w-Joomla-1.6-weblinks)

pmlvl
04-02-2011, 23:41
U mnie ten sam problem i działa łatka Pyźka dzięki !!

pyziak
05-02-2011, 00:37
Pyźka proszę mnie nie przedrzeźniać :) 'Pyziak' 'Pyziaka' :)

adampuch
28-02-2011, 02:44
Cześć wszystkim,
mam domenę na home.pl i miałem ten sam problem z joomlą 1.6. plik od Pyziaka działa ładnie ale dalej pojawiłsię kolejny problem.
Po instalacji i usunięciu folderu installation chciałem normalnie zalogować się jako administrator. Dodam ze strona wyskakuje ładnie, panel logowania administratora tez ale po wpisaniu loginu i hasła wyskakuje coś takiego:

An error has occurred.
The requested page cannot be found.
Search
You may wish to search the site or visit the home page.

Home Page

404Component not found
If difficulties persist, please contact the System Administrator of this site and report the error below..

Niby instalacja przebiegła dobrze i sprawnie i nie mam pojęcia jaka może być przyczyna.

pmlvl
28-02-2011, 09:27
Wiesz home ma autoinstalator skryptów, niestety nie ma tam 1.6. Od jakieś kilku miesięcy nie mogłem zainstalować poprawnie żadnej paczki Joomla. Mam postawionych około 40 stron na joomla nigdy nie było problemu.. aż do czasu... Miałem problem z zainstalowaniem nawet 1.5 zadzwoniłem do pomocy technicznej a Pan do mnie: Proszę skorzystać z autoinstalatora.... .

Kolejny przykład:
Nie działa u nich również Magento, pomoc techniczna home.pl nie jest wstanie mi pomóc, a ponad pół roku temu instalowałem Magento wer. 1.4 - działał pięknie, dla testu zarejestrowałem się na nazwa.pl na okres próbny, jako że nie chciałem płacić za nowy serwer u innego dostawcy, jeżeli błąd leżałby po mojej stronie i tam wszystko działa jak należy.

W home.pl ostro ostatnio popsuli serwery.

adampuch
01-03-2011, 01:53
Tak jak w poście wyżej użyłem pliku Pyziaka. Problem jakiego nie potrafie rozwiązać jest na ostatniej stronie instalacji. Po wpisaniu adresu e-mail i haseł na górze wyskakuje taka informacja:
3746

Do tej pory udało mi się raz postawić wersję 1.6 na home.pl ale z innych przyczyn podjąłem się instalacji jeszcze raz. Nie zmieniałem nic w ustawieniach mySQL na home.pl.

Dodam że zlikwidowałem bazę na home.pl i utworzyłem ją na nowo i nic.

pyziak
01-03-2011, 08:30
Powiem tak: okresy testowe na home.pl pokończyły Mi się dawno, a żeby kupić tam hosting musiałbym upaść na głowę pomijając ich autorskie rozwiązania, które wiadomo jak wpływają na działanie skryptów dochodzi jeszcze cena :) , dlatego dalsza pomoc z mojej strony względem tego hostingu jest raczej niemożliwa. Jest tyle przyjaznych hostingów dla Joomla! czego się pchać na ten home.pl, zmiana hostingu to wyjazd do innego Państwa na stałe. Jak dzwonili do mnie z BOK z home.pl gdy kończył mi się okres testowy powiedziałem że mogą mi dać za darmo, ale się nie zgodzili :) .
Pozdrawiam.

kodhtml
05-03-2011, 14:09
Cześć wszystkim,
mam domenę na home.pl i miałem ten sam problem z joomlą 1.6. plik od Pyziaka działa ładnie ale dalej pojawiłsię kolejny problem.
Po instalacji i usunięciu folderu installation chciałem normalnie zalogować się jako administrator. Dodam ze strona wyskakuje ładnie, panel logowania administratora tez ale po wpisaniu loginu i hasła wyskakuje coś takiego:

An error has occurred.
The requested page cannot be found.
Search
You may wish to search the site or visit the home page.

Home Page

404Component not found
If difficulties persist, please contact the System Administrator of this site and report the error below..

Niby instalacja przebiegła dobrze i sprawnie i nie mam pojęcia jaka może być przyczyna.
Sprawdź źródło strony logowania i zobaczy czy linia 67 (definicja formularza) nie wygląda następująco:

<form action="/index.php" method="post" id="form-login">jeśli action nie zawiera "administrator" (czyli jak wyżej) wejdź do panelu przez adres
http://nazwa_strony/administrator/index.php - adres dla action powinien wtedy zostać właściwie utworzony. Powinien wyglądać tak:

<form action="/administrator/index.php" method="post" id="form-login">Za panel logowania odpowiedzialny jest plik /administrator/modules/mod_login/tmpl/default.php więc możesz też zmodyfikować linijkę dodając "na sztywno" administrator:
z:

<form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="form-login">na:

<form action="<?php echo JRoute::_(JPATH_BASE.DS.'index.php', true, $params->get('usesecure')); ?>" method="post" id="form-login">lub usuwając całe echo JRoute... i dodać jedynie "/administrator/index.php" -nie jest to do końca poprawne rozwiązanie ponieważ problem leży głębiej, ale doraźnie powinno pomóc.

Problem z home.pl polega na tym, że np. instalując Joomle w głównym folderze ścieżka JPATH_BASE dla administratora wygląda tak:
/administrator
a z reguły jest to np. /home/hosting/public_html/administrator
natomiast JPATH_ROOT tworzony jest na zasadzie usunięcia ostatniego członu w ścieżce przez to jest w tym wypadku pusty (definicje dla administratora znajdują się w pliku administrator/includes/defines.php)


...
$parts = explode(DS, JPATH_BASE);
array_pop($parts);

//Defines.
define('JPATH_ROOT', implode(DS, $parts));
...
i w tym wypadku rozwiązanie Pyziaka pomaga. Można również tutaj zmodyfikować JPATH_ROOT, aby sprawdzić czy nie jest to wartość pusta i przypisać odpowiednią wartość, aby wszędzie była właściwa:

define('JPATH_ROOT', implode(DS, $parts));na

define('JPATH_ROOT', (implode(DS, $parts)) ? implode(DS, $parts) : DS);
Jeżeli ktoś działa z bug squadem, dobrze byłoby to im zgłosić ten problem. Co do mod_login - to jest to kwestia klasy JRoute i odpowiedniego przygotowywania adresu przez tą klasę.

pyziak
05-03-2011, 15:15
@kodhtml pierwszy post na forum i takie wyłożenie tematu :), jestem pod wrażeniem i aby tak dalej,
Pozdrawiam.

ps.
a może jesteś z BOK z home.pl ? :zagubiony:

kodhtml
05-03-2011, 15:32
z BOK`iem home.pl nie mam związku :) właśnie wczoraj przenosiłem stronę opartą na Joomli 1.6 na serwer klienta z home.pl (za pomocą akeeba i też nie obyło się bez drobnych problemów ze znalezieniem przez kickstart pliku z archiwum) - frontend działał jak należy, ale dziś wynikła konieczność wprowadzenia modyfikacji, więc i zalogowania się do panelu administracyjnego - a tu problem :) trafiłem na forum przez Google i zaciekawił mnie temat - "powęszyłem" w kodzie opierając się na Twojej propozycji rozwiązania i doszedłem do tego co powyżej :) o ile czas pozwoli - będę pomagał :)

Pozdrawiam.

eskim
24-03-2011, 19:23
Witam

Problem występuje po użyciu funkcji array_pop($parts);, a konkretniej ze wskaźnikiem do pierwszego elementu tablicy $parts po wykonaniu funkcji. Przypisanie takiego cuda po wspomnianym poleceniu $parts[1] = $parts[1] rozwiązuje problem z JPATH_ROOT. Oczywiście musimy to także zrobić w innych plikach w których występuje podobna konstrukcja z array_pop() oraz być może innymi funkcjami operującymi na wskaźnikach.

Kupę lat już nie programowałem, więc może ktoś mądrzejszy podpowie. Jakie ustawienie serwera może powodować takie cudo? Nowa Joomla mnie zmobilizowała, by znów zajrzeć do kodu.. :).. stare poczciwe czasy.. ehh.. :P

hobbis
26-03-2011, 01:18
Uprzejmie informuję, że znalazłem inne możliwe rozwiązanie dla wszystkich instalujących Joomla 1.6 w podkatalogach na home.pl, nie wymagające stosowania tricku nazywanego w tym wątku rozwiązaniem Pyziaka (serdeczne podziękowania i pozdrowienia dla Pyziaka :)). Nową metodę przetestowałem ze skutkiem bardzo pozytywnym, tym bardziej że nie wymaga ono "poprawiania" kodu samego CMS'a.

Instrukcja:

1/ Joomla 1.6 wgrywamy do wybranego podkatalogu na naszym serwerze w home.pl, nazwijmy go powiedzmy "naszajoomla";
2/ w panelu administracyjnym na home.pl ustanawiamy domenę, nazwijmy ją "naszadomena.pl", ale UWAGA pozostawiamy ją skierowaną na nasz katalog główny "/" (root) - to bardzo ważne!;
3/ w katalogu głównym "/" (root) naszego serwera ustanawiamy plik .htaccess z następującym kodem w środku:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?naszadomena\.pl$ [NC]
RewriteCond %{REQUEST_FILENAME} !/naszajoomla/
RewriteRule ^(.*)$ /naszajoomla/$1 [L]

4/ po wywołaniu w okienku przeglądarki naszej domeny "http://naszadomena.pl" zgłasza się nam elegancko instalator Joomla 1.6 bez pamiętnego błędu "Warning: strpos() [function.strpos]: Empty delimiter in...itp" ani żadnego innego komunikatu, który zwykle psuje nam humor:);

5/ aby uniknąć również błędu, o który wspominał adampuch ("An error has occurred. The requested page cannot be found") należy zwrócić uwagę aby panel administratora został po instalacji wywołany przez adres "http://naszadomena.pl/administrator/index.php" a nie "http://naszadomena.pl/naszajoomla/administrator/" co proponuje nam (nie wiem dlaczego?) instalator Joomla po naciśnięciu stosownego przycisku na ostatniej karcie procesu instalacyjnego; również strona frontowa instalacji Joomla 1.6 zgłasza się bez problemów jeśli zostanie wywołany adres "http://naszadomena.pl"

Jest to (przynajmniej dla mnie) nowe rozwiązanie dla użytkowników "stawiających" Joomla 1.6 w podkatalogach serwerów na home.pl. Wymaga ono jeszcze przetestowania. Byłbym więc wdzięczny za info od innych użytkowników, czy takie "obejście" problemu instalacyjnego Joomla 1.6 na home.pl nie wywołuje innych jeszcze, nieznanych mi w tej chwili błędów. Mam jednak nadzieję, że wszystko będzie ok.

Pozdrawiam serdecznie wszystkich:)

Marfish
11-06-2011, 20:02
Witam..
Postanowiłem problem rozwiązać u źródła czyli w home.pl - będącym źródłem wszystkich problemów. Oto odpowiedź jaką otrzymałem, być może komuś się przyda :

"Aby uniknąć tego typu komunikatu proszę dokonać edycji pliku 'libraries/joomla/filesystem/path.php' tak aby fragment kodu:

if(empty($path)) {
$path = JPATH_ROOT;

}

zmienienić na:

if(empty($path)) {
$path = "/";

}

Po zapisaniu zmian wspomniany komunikat nie powinien być zauważalnym. Zapraszam do weryfikacji."

pyziak
11-06-2011, 22:20
@Marfish czy Ty w ogóle czytałeś cały ten wątek ? , bo generalnie nie wiem co chcesz przekazać - rozwiązanie, które podałeś było podane 11'tego stycznia

Marfish
11-06-2011, 22:43
Przyznaję, że do końca nie czytałem.
Pozdrawiam :)

Joidas
26-06-2011, 17:34
dzięki Pyziak! :)

nismo
03-12-2011, 17:07
Co do mod_login - to jest to kwestia klasy JRoute i odpowiedniego przygotowywania adresu przez tą klasę. Mam problem z logowaniem się z poziomu witryny. Podejrzewam, że błąd właśnie leży w klasie JRoute. Jak poprawić aby było dobrze. Joomla 1.7.2 na home.pl wrzucona do podkatalogu.