Autor Zpráva
Shadowek
Profil
Dobrý den, chtěl jsem přepsat jednu aplikaci, která vyžaduje rozšíření sockets.dll. Rozšíření jsem si řádně aktivoval v konfiguračním souboru php.ini a ujistil se že neexistuje žádný jiný konfigurační soubor na upřednostňovanějším místě. Naneštěstí když se program pokouším spustit, tak si stěžuje že nezná funkci socket_* . Myslím si že jsem tento problém již dříve řešil ale už si nevzpomínám jak. Co by jste mi doporučili zkusit nebo udělat ... Možná pomůže, když řeknu, že aplikaci pouštím přes php-cli ...
Prosím o radu děkuji :)
Joker
Profil
Shadowek:
A co říká phpinfo? Je to tam napsané (asi by to mělo být: Sockets Support - enabled)?
Shadowek
Profil
Ano pane ... Samozřejmě že jsem se tam nejdříve kouknul než jsem napsal a opravdu to tam stojí.
nightfish
Profil
Shadowek:
Možná pomůže, když řeknu, že aplikaci pouštím přes php-cli
Je dost možné, že -cli verze používá jiný konfigurační soubor. Zkus jej spustit s parametrem -c, který bude odkazovat na stoprocentně správný php.ini.
Shadowek
Profil
Bohužel také nefunguje ... Jestli by se hodil tak dávkový soubor přes který to spouštím je zde :
@echo off
"C:\Program Files\EasyPHP-5.3.1\php\php.exe" -q -c ../conf_files/php.ini %1 > error.txt                 

Vysvětlovat jak funguje doufám nemusím :)
Davex
Profil
Zapni si v php.ini logování chyb do souboru. Jsou v něm nějaké chyby po spuštění skriptu?
log_errors = On
error_log = "C:\cesta\php_error.log"
Shadowek
Profil
Mám ... Ano chyba o které jsem již psal se zněním "Fatal error: Call to undefined function socket_create() in D:\www\PHP-CLI\server.php on line 9"
Davex
Profil
Pokud to spouštíš v podadresáři www, tak mi funkce socket_* ve skriptu spuštěném pomocí příkazu [#5] na Windows XP fungovaly, jen jsem v php.ini musel opravit cestu k rozšířením:
extension_dir = "C:\Program Files\EasyPHP-5.3.1\php\ext\"


Aktuálně používaný konfigurační soubor se dá zjistit příkazem:
"C:\Program Files\EasyPHP-5.3.1\php\php.exe" -q -c ../conf_files/php.ini --ini
Shadowek
Profil
Když jsem přiřadil argument --ini jak jsi psal, tak mi to vyhodilo toto:

Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

Ale je tedy zvláštní když udávám adresu i při zadávání příkazu, tak odkazuje do C:\Windows ... , kde žádný php.ini nemám.
nightfish
Profil
Shadowek:
Ale je tedy zvláštní když udávám adresu i při zadávání příkazu, tak odkazuje do C:\Windows ... , kde žádný php.ini nemám.
tak zkus k tomu INI souboru zadat absolutní cestu
Shadowek
Profil
Ano ... To jsem zkusil, avšak výsledek byl pořád stejný.
nightfish
Profil
Jen pro shrnutí, platí všechny tři následující body?
1) spouštíš přes
"C:\Program Files\EasyPHP-5.3.1\php\php.exe" -q -c "C:\Program Files\EasyPHP-5.3.1\conf_files\php.ini" --ini

2) v souboru C:\Program Files\EasyPHP-5.3.1\conf_files\php.ini je:
extension_dir = "C:\Program Files\EasyPHP-5.3.1\php\ext"
extension = php_sockets.dll

3) soubor C:\Program Files\EasyPHP-5.3.1\php\ext\php_sockets.dll existuje
Shadowek
Profil
Ano
Shadowek
Profil
Teď jsem si hrál s nastavením apache a docela jsem to pokazil ... tudíž jsem EasyPHP musel přeinstalovat ... Teď mám verzi 5.3.2 ale jsem na tom ve všem stejně :D
Shadowek
Profil
Také mé další zjištění je, že když se tuto aplikaci pokusím spustit normálně v prohlížeči ... jako přes localhost, tak funguje bez sebemenších potíži, avšak tohle je pro mě absolutně nevhodné ... já potřebuji CLI.
Shadowek
Profil
No nic pánové ... Už jsem to nějak (netuším jak) vyřešil :) Děkuji

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