Joomla в DOM.BG PDF Печат Е-мейл
Автор plamen5rov   
08 февруари 2006

Тексът по-долу е публикуван от гост на форума с ник dom.BG и хвръля доста светлина по проблемите на инсталирането на Джумла на сървърите на въпросната хостинг-компания. Оригиналния постинг по темата можете да прочетете на http://www.joomla-bg.com/index.php?option=com_smf&Itemid=44&?topic=2460.msg6364;topicseen#msg6364

Здравейте,

Joomla има два проблема при инсталиране на хостинг в dom.BG, ето какви са те, причините и как да се решат.


0. Факти
а) PHP се изпълнява като CGI
б) safe_mode е ON, но няма влияние поради горния факт
в) от а) следва, че всеки скрипт може безпроблемно да създава, променя и трие файлове, тъй като се изпълнява с привилегиите на потребителя. Не е необходимо да се променят на 777 и други подобни.


1. Грешка Internal 500 error при някои дейности след инсталация (инсталирането е безпроблемно, ако се следват стъпките и се въвежда правилна информация в съответните полета).

Причина: факт а) и следния ред от файл includes/joomla.php:
                header( 'HTTP/1.1 301 Moved Permanently' );
който би работил само, ако PHP е модул на уеб сървъра. Ако се изпълнява като CGI коректното е:
                header( 'Status: 301 Moved Permanently' );

Решение:
по един от трите начина да се замени реда от файл includes/joomla.php:
                header( 'HTTP/1.1 301 Moved Permanently' );
с:
а)
                header( 'Status: 301 Moved Permanently' );
б) да се коментира или изтрие
//                header( 'HTTP/1.1 301 Moved Permanently' );
(този ред не е осоебно важен, при Location: статусът по подразбиране е "302 Moved Temporarily", което е със същия ефект.)
в)
                header( (php_sapi_name()=='cgi'?'Status:':'HTTP/1.1').' 301 Moved Permanently' );
(това е коректен код, за да работи Joomla с PHP, работещо по който и да е от двата начина - модул или CGI. Не са го направили така, тъй като от даден момент PHP функцията header() сменя "HTTP/x.x" със "Status:", но по този начин правят несъвместим Joomla с някои версии PHP).


2. Грешка Failed to create directory "..." при инсталиране на нов компонент.

Причина: бъг в Joomla, водещ до "//" на края на път. Във файла administrator/includes/admin.php функцията mosMakePath при $path='' добавя излишно наклонена черта към $base и се получава път с две наклонени черти, маха се едната, остава другата и mkdir() в някои версии на PHP връща грешка (в някои версии работи).

Решение: да се замени проблемния ред от файл administrator/includes/admin.php:
                        $path .= $parts[$i] . '/';
с:
                        $path .= $parts[$i] . ($parts[$i] != ''?'/':'');
(когато $parts[$i] е празно да не добавя '/')

-------

И двата проблема са в Joomla и явно не са забелязани, тъй като на някои конфигурации и версии на PHP не се проявяват.

И така, накратко, за да работи коректно Joomla, най-лесно трябва:

1. да се коригира във файл includes/joomla.php реда
                header( 'HTTP/1.1 301 Moved Permanently' );
с
                header( (php_sapi_name()=='cgi'?'Status:':'HTTP/1.1').' 301 Moved Permanently' );

2. да се коригира във файл administrator/includes/admin.php реда
                        $path .= $parts[$i] . '/';
с
                        $path .= $parts[$i] . ($parts[$i] != ''?'/':'');



Успех.
 
Следваща >