DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   PHP, Apache - I want to get out (http://www.devprotalk.com/showthread.php?t=2625)

analyzer 17. 03. 2007. 13:19

PHP, Apache - I want to get out
 
Pozdrav svima redom, da ne nabrajam.
Ovo je moje prvo postovanje na dev pro talk-u a po Ilijinom nagovoru :1064:
Evo i mog problema...
Napravio sam program u php-u i na računaru korisnika ga instaliram nakon instaliranja apache-a, mysql servera i php-a.
Program radi u lokalu i radi bez problema. Medjutim, kao i svaki drugi program i njemu treba update a ja sam funkciju update-a zamislio na sledeci nacin.

1. korisnik otvara update stranicu u lokalu (localhost )-ovo radi
2. uz par mysql instrukcija skript definise promjenjive na osnovu vrijednosti iz lokalnih tabela.(i ovo radi)
3.nakon definisanja promjenjivih program treba da se kaci na moj sajt i da uradi par querija na bazi koja je na internetu a na osnovu promjenjivih koje su mu zadate u lokalu.
E OVO NE RADI.
Nije greska u skriptu jer nece nikako da se poveze sa stranice u lokalu na server i da izvuce bilo kakve podatke, a to mi je neophodno ako hocu da uporedim verziju koju klijent ima sa najnovijom verzijom.

eto... ako nisam dovoljno objasnio pitajte... visicu po forumima dok ne nadjem odgovor.:1074:
Pozdrav svima

LiquidBrain 17. 03. 2007. 13:52

Pogledaj u konfiguraciji mysql servera kome pristupash u lokalu, kako je definisan korisnik sa kojim se logujesh.

Verovatno je definisan kao korisnik@localhost, ako jeste ti ga lepo definishi kao
korisnik@hostname
gde je hostname ime mashine na kome se izvrsava skripta. Pa javi ako jeste :)

Pozdrav.

Ilija Studen 17. 03. 2007. 14:02

Uopšte nema potrebe da se remotely kači na bazu.

Većina biblioteka za parsiranje XML-a ima mogućnost da otvori URL (može preporuka za dobar XML parser na PHP4; za PHP5 je SimpleXML standard) pod uslovom da je PHP-u odobren izlaz na net. Tehnički, možeš da uradiš nešto slično ovome:

PHP kôd:

$xml simplexml_load_file('http://www.sajt.com/check.php?local_version=0.19');
// do something with data 

Na svom sajtu imaš skripticu koja na osnovu parametara prenetih kroz GET određuje da li korisnik ima aktuelnu verziju, da li mu je licenca istekla itd.

Ovde je moguće imati par problema:

1. Ima milion različitih načina na koje PHP setupovan i u nekim slučajevima jednostavno nemaš izlaz na net. Jako čest slučaj kod kompanijskih mreža, posebno u USA.
2. Ne bih ovo koristio za proveru ispravnosti licence. Taj kod bi trebalo da bude ugrađen u samu aplikaciju.

LiquidBrain 17. 03. 2007. 14:06

Ja se izvinjavam, propustio sam deo gde se program kazi na tvoj sajt.

analyzer 17. 03. 2007. 14:07

oho...evo ga lav.
vidi, meni nije problem to sa setovanjem php-a, jer ja ga distribuiram i on ostaje takav.
aplikacija ne ide sama vec uz neki vid moje asistencije kod korisnika, a niko od njih nema, ali ponavljam (sad sam ko draskovic) NEMA ni mysql ni php niti bilo sta nalik tome.
ja dolazim na cistu masinu koja nema niti je radila sa bazama.
ih bre ilija...nije ovo moje aC :)

analyzer 17. 03. 2007. 14:08

nije u pitanju mysql.
ja pokusavam da se nakacim regularno na remote bazu sa potpuno ispravnim parametrima iz lokala.
ako promenim bilo sta u mysql-u u lokalu, onda lokal nece raditi-

analyzer 17. 03. 2007. 14:10

nego, ilija, deder ti meni objasni malo to poblize...php i izlaz na net...

BrainDamage 17. 03. 2007. 16:21

Citat:

Originalno napisao analyzer
nije u pitanju mysql.
ja pokusavam da se nakacim regularno na remote bazu sa potpuno ispravnim parametrima iz lokala.
ako promenim bilo sta u mysql-u u lokalu, onda lokal nece raditi-

Pa, problem i jeste oko konekcije na remote server. Korisnik za remote MySQL server je verovatno dodat kao user@localhost, sto znaci da server dozvoljava konekcije samo "sa samog sebe", a ne i izvana - sto je slucaj koji je potreban tebi, radi update-ovanja. Nema potrebe da bilo sta menjas na client racunarima...

edit: resenje su ti vec naveli:
1) dozvoli na remote serveru kacenje sa remote masina - za svaki remote host poseban user (recommended, ali pada u vodu ako klijenti nemaju staticke IP adrese, i guess...), ili da postojecem korisniku izmenis privilegije i dozvolis kacenje sa bilo kog host-a (nije bas preporucljivo...)
2) Ilijino resenje - XML. Cini mi se da je malo izvikano ovo oko "izlaza napolje" jer jos nisam naleteo na konfiguraciju koja je zabranjivala otvaranja remote fajlova (osim mozda tamo gdje PHP radi u safe modu). Svejedno, ti odrzavas klijent masine tako da... :)

analyzer 17. 03. 2007. 16:47

Citat:

Originalno napisao BrainDamage
Pa, problem i jeste oko konekcije na remote server. Korisnik za remote MySQL server je verovatno dodat kao user@localhost, sto znaci da server dozvoljava konekcije samo "sa samog sebe", a ne i izvana - sto je slucaj koji je potreban tebi, radi update-ovanja. Nema potrebe da bilo sta menjas na client racunarima...

edit: resenje su ti vec naveli:
1) dozvoli na remote serveru kacenje sa remote masina - za svaki remote host poseban user (recommended, ali pada u vodu ako klijenti nemaju staticke IP adrese, i guess...), ili da postojecem korisniku izmenis privilegije i dozvolis kacenje sa bilo kog host-a (nije bas preporucljivo...)
2) Ilijino resenje - XML. Cini mi se da je malo izvikano ovo oko "izlaza napolje" jer jos nisam naleteo na konfiguraciju koja je zabranjivala otvaranja remote fajlova (osim mozda tamo gdje PHP radi u safe modu). Svejedno, ti odrzavas klijent masine tako da... :)

hmmm...ali to je vec dozvoljeno. dakle, dozvolio sam kacenje na remote server i to wild cardom, sto opet nije to.
dakle, cisto da sumiram:
na remote hostu dozvoljeno je kacenje na mysql bazu sa bilo kog host-a.
u lokalu,(ne radim u safe modu), je sve definisano kako treba.
Poruka koju mi izbaci je da ne moze da se poveze na bazu(a i ta poruka je definisana u lokalu :))
cisto da napomenem...
na bazu se kacim uz pomoc navicat-a i uz potpuno iste parametre koji su navedeni na web stranici(koja se otvara u lokalu) i navicat prolazi.

Petar Marić 17. 03. 2007. 16:56

Da kojim slučajem niste iza proxy-a?

BrainDamage 17. 03. 2007. 17:01

A, da nemas kakav overwrite varijabli u toj update skripti, ako se kacis istovremeno i na obe baze pa... ili si hardcode-ovao parametre u mysql_connect i mysql_select_db? Sta tacno kaze die(mysql_error()), access denied? Firewall? Ostajem bez ideja, gadno je ovako "na daljinu" pogadjati...

analyzer 17. 03. 2007. 19:43

Citat:

Originalno napisao BrainDamage
A, da nemas kakav overwrite varijabli u toj update skripti, ako se kacis istovremeno i na obe baze pa... ili si hardcode-ovao parametre u mysql_connect i mysql_select_db? Sta tacno kaze die(mysql_error()), access denied? Firewall? Ostajem bez ideja, gadno je ovako "na daljinu" pogadjati...

evo parceta koda
$dbh=mysql_connect("ip", "user", "pass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db("baza",$dbh);
Najcudnije je sto mi uopste ne daje koja greska je u pitanju.
samo napise da ne moze da se konektuje i to je to...nema opisa greske.
vidi se da pokusava da se nakaci, odziv je sporiji.
sto se tice price o proxy-ju, ne znam da li sam iza nekog. kacim se preko telenorove mreze (GPRS).
opet...cudi me da ako je definisano na serveru da host moze biti bilo ko...zasto ne prolazi. A prolazi sa istim parametrima kad se kacim preko Navicat-a direktno na bazu...
Evo sta sam ja pokusao...
Analizirao sam malo Apache-ov konfiguracioni fajl... posebno odeljke o LISTEN i BINDADDRESS... recimo da bi Apache pored lokalhosta trebalo da osluskuje i hostove koje sam naveo...medjutim, cim unesem IP i aktiviram apache on se podigne ali ne radi bukvalno nista. Nema odziva na localhostu.
hmmm... ajde ako neko od vas moze, nek napravi stranicu kod sebe u lokalu i sa parametrima proba sa te stranice da se poveze na remote bazu i iscita nesto iz nje... ja bukvalno nemam nikakvu ideju vise.

ivanhoe 18. 03. 2007. 00:14

ne ispise nikakav mysql_error ? Da li pukne na connect ili na select baze?

nema ovo veze sa apachom, ti se iz php-a kacis na mysql (ako sam dobro shvatio), php kod klijenta mora da ima dopusteno otvaranje socketa, a tvoj mysql da ima definisanog usera `username`@`%` i to je sve...

proveri u php.ini-ju mysql.connect_timeout, po defaultu je setovano na 60 sekundi, mozda je to prekratko...takodje vidi na klijentu da ne timeoutuje connection...

takodje probaj da stavis error_reporting(E_ALL) na pocetak skripte, mozda postoji neki notice ili warning koji ne vidis..

Uzgred moja ti je proporuka malo drugaciji pristup: napravi web service za update: umesto da se skript kaci direktno na bazu, napravi kod sebe na serveru skript koji uzme podatke od remote skripte, proveri sta treba u bazi i vrati mu uputstvo za update.
To je mnogo sigurnija varijanta, ne treba pustati svakog da ti pristupa bazi, mozda neko od tih klijenata ima klinca koji zna malo php-a, a dosadno mu je..

Mr.Paja 18. 03. 2007. 07:06

Da ne zeza mozda firewall ?

analyzer 18. 03. 2007. 19:59

Izlazak napolje sa localhosta
 
evo, uz nesebicnu pomoc druga 35-68 na rjesavanju ovog mog problema skontali smo neke stvari...
Kao prvo, on je uspeo da se poveze na moju remote bazu sa lokalne stranice...znaci da su parametri za pristup na serveru ispravni.
Ja NISAM USPJEO DA SE KONEKTUJEM NA SOPSTVENI SERVER ....eh ironijo.

Kao drugo...
upgradeovao sam mysql bazu u lokalu na peticu i i dalje ne radi.
i kao trece i najbitnije...
drug 35-68 nije iza proxy-ja A JA JESAM.
Da li je to problem?
Ostaje mi jos samo jedno , a to je da upgrejdujem php.

Petar Marić 18. 03. 2007. 22:06

AFAIK PHP ne zna sam da prođe kroz proxy. Izlgeda da ćeš morati da radiš direktno sa TCP socket-ima ;)

ivanhoe 19. 03. 2007. 01:04

moze php da izadje na kraj sa proxijem i direktno preko wrapper funkcija, evo vise detalja: http://www.php.net/manual/en/wrappers.http.php
pogledaj pod Table N.3. Context options, postoji proxy parametar..

a moze i da se koristi curl...

analyzer 19. 03. 2007. 08:27

EVO ZAKLJUCAKA.
Naime, 36-68 mi je poslao jedan zanimljiv tekst sto se tice mog problema.
ukratko, u pitanju je verzija php-a koju koristim i verzija mysql koja se nalazi na remote serveru.
Koga interesuje da procita evo i linka:
http://www.whoopis.com/howtos/mysql-auth-fix.html

LiquidBrain 19. 03. 2007. 09:16

Citat:

Originalno napisao analyzer
EVO ZAKLJUCAKA.
Naime, 36-68 mi je poslao jedan zanimljiv tekst sto se tice mog problema.
ukratko, u pitanju je verzija php-a koju koristim i verzija mysql koja se nalazi na remote serveru.
Koga interesuje da procita evo i linka:
http://www.whoopis.com/howtos/mysql-auth-fix.html

Ovo pishe u manualu za instaliranje mySQL...

analyzer 19. 03. 2007. 21:51

Citat:

Originalno napisao LiquidBrain
Ovo pishe u manualu za instaliranje mySQL...

:)
Aha...
Fakat mi zao sto sam Vas bezveze povlacio... Pass hashing...
U svakom slucaju, hvala vam svima...da ne nabrajam.
Pozdrav


Vreme je GMT +2. Trenutno vreme je 07:14.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.