Autor Zpráva
Rover
Profil *
Som začiatočník na poli Apache/mysql/php a narazil som na jeden problém. Postupoval som podľa mnohých návodov a googlil niekoľko problémov a výsledok je taký, že som nainštaloval apache, ktorý beží a potvrdzoval to aj po zadaní localhostu vetou It Works. Nainštaloval som PHP5 a stránky v PHP sa v poriadku zobrazujú. Nainštaloval som MySql a MySQL Command Line Client po zadaní hesla funguje. Pomocou programov ako MySQL Administrator a HeidiSQL sa k nemu po zadaní používateľa root a hesla normálne pripojím a môžem vytvárať nové DB (tada aspoň si myslím, že ich vytváram).

Problém je, že z PHP stránok sa v prehliadači k MySql nepripojím. Ak napríklad začnem inštalovať Joomlu, tak dôjdem až po krok - zadajte názov hostiteľa (localhost), Meno používateľa (root), Heslo, Názov databázy. Názov databázy som volil vlastný (tej DB ktorú som vytvoril), ale skúsil som použiť aj DB test ktorá bola vytvorená po inštalácii. Po kliknutí na "dalej" sa nič nestane. Inštalácia dlho čaká, akoby na pripojenie a nakoniec to vzdá. Žiadny výpis chyby sa ale neobjaví. Rovnako je to aj v prípade phpMyAdmin. Ten ma po spustení index.php vyzve k zadaniu mena a hesla mysql. Zadám ho, ale nič sa nestane (stále sa len zobrazuje animácia, ako keď sa snaží načítať stránku). Nepodarilo sa mi dogooglovať k odpovedi a budem vďačný za každú radu, ktorým smerom sa mám pri riešení problémy vydať.
nightfish
Profil
Rover:
Začal bych jednoduchým skriptem, který otestuje, v čem by mohl být problém.

<?php
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
  $connect = mysql_connect('localhost', 'root', 'heslo') or Die('Došlo k chybě při připojování k databázi<br>'.mysql_error());
  mysql_select_db('test') or die('Došlo k chybě při výběru databáze.<br>'.mysql_error());
  $result = mysql_query('SHOW TABLES');
  if (!$result) {
    Die('Při pokusu o vypsání tabulek došlo k chybě.<br>'.mysql_error());
  }
  echo "Tabulky v databázi<hr>";
  while (list($tabulka) = mysql_fetch_row($result)) {
    echo $tabulka.'<br>';
  }
  mysql_close($connect);
?>
Rover
Profil *
Ďakujem za ochotu pomôct. Napísal som do skriptu svoje heslo uložil ako test.php a následne spustil z htdocs zložky v Apache. "Točenie v snahe pripojiť sa " trvalo nastavených 30sec.

Warning: mysql_connect(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 Warning: mysql_connect(): [2002] A connection attempt failed because the connected party did not (trying to connect via tcp://localhost:3306) in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 Warning: mysql_connect(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 Warning: mysql_connect(): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 Warning: main(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 Fatal error: Maximum execution time of 30 seconds exceeded in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4

Ak to dobre chápem, problém je s nezhodou časovej zóny. V PHP5.3.3/MySql5.1.49/Apache2.216 som žiadnu časovú zónu nenastavoval a ani som nevidel toto nastavenie počas inštalácie. V systéme (Windows 7 s vypnutým UAC) mám nastavenú našu zónu (UTC+01:00) Belehrad, Bratislava, Budapešť, Ľubľana, Praha. V php.ini som údaj o timezone našiel, ale je odsadený, aby sa nepoužil:
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =

Ak som to dobre pochopil, tak v PHP sa časové pásmo nastavilo automaticky, ale mysql to neurobilo. V manuály MySQL som našiel položku 9.6. MySQL Server Time Zone Support, ale nedarí sa mi pochopiť či ide skutočne o tento problém. Píše sa tam napríklad:
The system time zone. When the server starts, it attempts to determine the time zone of the host machine and uses it to set the system_time_zone system variable. The value does not change thereafter.
You can set the system time zone for MySQL Server at startup with the --timezone=timezone_name option to mysqld_safe. You can also set it by setting the TZ environment variable before you start mysqld. The permissible values for --timezone or TZ are system dependent. Consult your operating system documentation to see what values are acceptable.

Nedokáže teda MySql zistiť časové pásmo zo systému a je potrebné to na tvrdo nastavovať? Kde konkrétne by som to mohol hladať?
Kajman_
Profil *
Ohledně time zone jsou jen varování. Důležité je vyřešit
Warning: mysql_connect(): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4
Fatal error: Maximum execution time of 30 seconds exceeded in C:\webdirectory\App Files\Apache\htdocs\test.php on line 4 


Není tam nějaký firewall nebo tak něco, co by zakazovalo nebo omezovalo komunikaci mezi php a mysql serverem?
joe
Profil
Máš v souboru php.ini odkomentován tento řádek?

extension=php_mysql.dll
(tj. aby před ním nebyl středník)
nightfish
Profil
joe:
Máš v souboru php.ini odkomentován tento řádek?
Kdyby neměl, zhučí to na fatal error ohledně neznámé funkce mysql_connect.

Kajman:
Taky si myslím, že by to mohl být ten firewall.

Rover:
Zkus ve Windowsím firewallu přidat výjimku pro port 3306 - TCP. Je to v záložce "Výjimky" v "Nastavení brány firewall".
joe
Profil
nightfish:
Pravda, pardon.
Kajman_
Profil *
nightfish:
Taky si myslím, že by to mohl být ten firewall.

Jen je divné, že se jinak na mysql připojí. To asi nebude blokovaný port mysql, ale spíš nějak to apache. Nebo bude třeba apache používat nějakou špatnou (starší) dll knihovnu k mysql, co našel v systému.
Kajman_
Profil *
Nebo zkusit nastavit 127.0.0.1 místo localhost
http://diskuse.jakpsatweb.cz/?action=vthread&forum=31&topic=109982#3
Rover
Profil *
Som vďačný za vašu pomoc.
Najprv som pre istotu skontroloval extension=php_mysql.dll, či neni odkomentovaná. Je v poriadku.
Firewall som už predtým vyskúšal, ale pre istotu som to urobil znova. Používam EsetSS. Dočasne som úplne vypol sieťovú filtráciu a aj antispyware/anivirus štít. Situácia sa opakovala. Skontroloval som, či sa pritom náhodou automaticky nezapne WinFirewall, ale nie. Zostal vypnutý. Preistotu som však v ESS pridal aj vínimku na port 3306, ale nič sa žiaľ nezmenilo.

Vyskúšal som Kajmanovu radu a úspech!:-)
Otvoril som hosts a omrkol. Spybot Search and Destroy tam nastavuje na 127.0.0.1 nebezpečné webové adresy. Napísal som na 127.0.0.1 aj localhost, aj keď by to malo byť automatické, ale vuala - úspech. Všetko zrazu funguje.
Prejdem aj cez test.php od nightfisha a aj sa prihlásim k databáze cez phpMyAdmin.

Ešte raz veľmi pekne ďakujem všetkým za investovaný čas a pomoc.

Záver:

VYRIEŠENÉ
Pomohlo tvrdé nastavenie
127.0.0.1 localhost
V súbore hosts (C:\Windows\System32\drivers\etc)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0