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

How to override (hack) location directories eg. Model in Zend Framework projects

Content At beginning Use Case Standart directory layout Specific directory layout Solvetion Summary At beginning This approach is bad but it is trivial and works. First I thought about a way how to inject/override by my implementation but if I stood before "I need only change location where objects will be generated..." Use Case For example - your project's 'models' directory has different structure and you must remove each generated model's php file to your specific directory. Standart directory layout If you use command "zf create model ItemModel" . ItemModel file will be generated by default in directory 'models' . ----models |--DbTable |--ItemModel.php Specific directory layout We want to generate model class in subdirectory 'Domain' . That's all. ----models |--DbTable |--Domain |--ItemModel.php Solvetion We must find directory '%ZF_HOME%\library\Zend\Tool\Project\Context\Zf\' . T...

Zend framework - jak vytvořit modul

Úvod V příspěvku se zmíním o způsobu, jak vytvořit modul v Zend Frameworku. Dále si povíme o jeho registraci v projektu a namapování zdrojů, které bude daný modul používat. Architektura projektu Jak vytvořit modul Namapování adresářové struktury modulu Shrnutí Závěr Případné problémy Zdroje Jednu poznámku hned na začátku, seznam proměnných, které budu používat v textu: %APACHE_HOME% - adresář, v kterém máte nainstalován httpd server %APP_HOME% znamená %APACHE_HOME%/htdocs/zendapp/application , jedná se o lokaci aplikace, na které budu vysvětlovat tento návod Architektura projektu Adresářová struktura ZF projektu hraje klíčovou roli. Základní stavební jednotkou projektu je modul . Základní struktura aplikace, kterou získáváte stažením Zend Frameworku je považována za defaultní modul. Nicméně při implementaci větších projektů se setkáte s tím, že projekt je potřeba rozdělit na několik logických celků (administrace, blog, fotogalerie atd.). ZF nabízí architektům mod...

Nevytvářejte společného předka pro Zend_Controller_Action používejte Zend_Controller_Plugin

Je žádoucí mít jednu implementaci opakující se funkcionality na jednom místě a tu reusovat. Narazil jsem však při vytváření společného předka pro Zend_Controller_Action na jeden problém. Když vytvořím předka pro své controllery, pak nelze použít Zend_Tool pro generování akcí. Nastavení prostředí V projektu mám tuto hiearchii: |--library |--MyLibrary |--Controller |--Action |--Action.php Výše uvedenou knihovnu mám pak zaregistrovanou v Bootstrap.php souboru, potažmo namespace, aby ji Zend_Autoloader našel. Kod.1 public function _initLibraryNamespace(){ $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace('MyLibrary_'); } Nyní vytvořím pomocí Zend_Tool controller v defaultním modulu. Na problém se však narazil i u controlleru, který byl v modulu. zf create controller Item 1 Nyní změním předka na svou implementaci controlleru. Kod.2 /** * @author...