Přeskočit na hlavní obsah

XAMPP - problémy s Apache (ServerRoot must be a valid directory, make_sock: could not bind to address)

O instalaci a příspěvek o spuštění Apache a MySQL serveru jsem již psal na svém blogu. Při nedávné instalaci, kterou jsem pojal jako kata cvičení, abych nevyšel z formy jsem narazil na problémy, které jsem již řešil a považuji je, za standard a mnohým ušetří to "pátrání". Výčet nemusí být konečný (pakliže se budu dopouštět takových chyb) :

ServerRoot must be a valid directory
Hlášení - httpd.exe: Syntax error on line xx /path/to/your/apache/conf : ServerRoot must be a valid directory (%XAMPP_HOME%/apache/logs/error.log)
Popis - máte nekonzistentí namapování adresářové struktury pro server Apache. Ověřte si, co je zapsáno v direktivě ServerRoot v konfiguračním souboru (%XAMPP_HOME%/apache/cont/httpd.conf) měla by tam být buď absolutní v lepším případě relativní cesta k adresáři %XAMPP_HOME%/apache.
Řešení - nejjednoduší je zapsat absolutní cestu k adresáři Apache serveru. Někdy je pouze znovu-namapovat adresářovou strukturu za pomocí konsole - spusťte setup_xampp.bat a zvolte v průběhu reinstalace volbu Relocate xampp.

make_sock: could not bind to address 0.0.0.0:80
Hlášení - Only one usage of each socket address (protocol/network address/port) is normally permitted : make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down.
Popis - na portu 80 už poslouchá jiná aplikace. Server apache má tento port nastaven v konfiguračním souboru (%XAMPP_HOME%/apache/cont/httpd.conf) direktiva ServerName (ServerName localhost:80).
 Řešení  - Je možné jej změnit, ale doporučuji se podívat, která aplikace na portu 80 visí (máte Skype? - pak v nastavení odšktněte volbu - Use port 80 and 443 as alternative for incoming connections). Pakliže nemáte Skype anebo tuto volbu máte neaktivní je potřeba to zjistit za pomocí konsole (utitlita netstat) - zadejte příkaz:

netstat -ao



Na obrázku výše vidíte výpis všech (operátor -a) aplikací, které komunikují přes síťové rozhraní (slouží pouze pro názornost, momentálně tam na portu 80 nic neběží). V tomto systému najděte ve sloupci Místní adresa řádek, který známe z hlášení výše 0.0.0.0:80, v této řádce se ještě podívejte na hodnotu ve sloupci PID (operátor -o).

V tuto chvíli znáte PID (jednoznačný identifikátor procesu) a můžete aplikaci "killnout". Otevřte Task manager (Win+R, nebo CTRL+SHIFT+Esc) a na záložce Procesy (Win 7) se podívejte, zda je vidět v záhlaví sloupců PID.
1) ano - pak dohledejte proces a ukončete jej
2) ne - pak je nutné zapnout viditelnost sloupce PID a to v horním menu dejte Zobrazit > Vybrat Sloupce a vyberte PID poté aplikujte bod 1
V tuto chvíli můžete v XAMPP Control Center nastartovat server Apache, protože výše uvedené problémy jsou vyřešeny.

Komentáře

Populární příspěvky z tohoto blogu

Letmý pohled na php frameworky Zend, CakePHP a Prado

Tento článek vyšel původně na blogu derhaa.com, který jsem však zrušil. Abstrakt Tento článek je předvojem seriálu o Zend Framework (u) – dále je tu velmi stručný rozbor,  jak sem nahlédl pod pokličku dalších dvou frameworků –  CakePHP (CP) a Prado (PD).  Mimochodem se zde stručně dozvíme jak frameworky pracují a soupis funkčností, kterými se od sebe odlišují. Cílem článku je povrchně seznámit čtenáře se třemi PHP frameworky, které se staly předmětem mého zájmu – v čem napsat středně veliký projekt.   Idea Když jsem přemýšlel v čem napíšu svůj první větší počin, tj. aplikace typu HRMS , jehož dalším cílem bude nad shromážděnými daty provádět specifické analýzy/statistiky související se sportovní tématikou. Předpokládal jsem, že to nebude malý projekt, který lze napsat na koleni, ale budu potřebovat sofistikovanější nástroje pro práci s databází ( ORM ),  propracovanější návrh doménového modelu , následné rozdělení aplikace na logické celky – vrstvy ...

Zend_Tool - Cannot redeclare class Zend_Loader

V mém případě, když jsem zadal následující příkaz: zf create module admin V konsoli se objevila následujicí hláška Cannot redeclare class Zend_Loader in path/to/library/Zend/Loader on line 31 Řešení je jednochuché - Nakopírujte soubory zf.bat a zf.php z adresáře %ZEND_FRAMEWORK_DIR%/bin do adresáře %PHP_HOME% . V případě, že chcete vědět více – mkrněte na oficiální dokumentaci Zend_Tool .

PHP a Zend Framework autoloading

Úvod V příspěvku se zmíním o způsobu a správě „importů“ (tzv. autoloading) php souborů v samotném PHP a poté se dozvíme, jak autoloading php souborů řeší Zend Framework. Autoloading v PHP Správa importů v PHP Jak "importovat" v PHP soubory Jak funguje mechanismus importů v PHP Autoloading v Zend Framework Autoloading v PHP Základem při psaní aplikací v PHP je nutné si uvědomit, jak funguje tzv. autoloading php souborů. V PHP neexistují importy jako je známe např. z Java. Když například potřebujete konstruhovat třídu jejíž definice je v jiném souboru – je nutné si tento soubor za pomocí konstrukce require nebo require_once ( include , include_once ) “naimportovat“ do svého souboru (předpokladem, je že soubory jsou umístěné na include_path ). Dalším řešením je překrýt funkci autoload . Správa importů v PHP Správa “importů” souborů v php mi přijde neštastná. Jedná se do jisté míry o problém, alespoň pro mne – jsem vývojářem v Java , kde tento mechanismus je zajišt...