Kedves PHP-sok!
Van egy PHP alkalmazásunk, amely LINUX-on MySQL-lal fut, php3-mal. Sok kis *.php file-t írtunk hozzá. Most áttettünk UNIX alá minden szoftver összetevőt (APACHE, Mysql, PHP4) és a *.php file -ok között az adatátvitel se a POST methoddal se Query stringgel nem működik. A változók értéke nem adódik át. Egy php file magában probléma mentesen lefut. Hol lehet a hiba, az Apache van rosszul konfigurálva?
Örülnék ötleteknek.
[script]
bekes=new Array(Békéscsaba,Szarvas(itt lakom:)),Gyula);
bacs=new Array(Kecskemét,Kunszentmárton);
function megyecsere()
{
var megye=eval(document.megye_form.megye.value);
for (var x=0; x [ megye.length; x++)
{
if (x==0) document.megye_form.falu.length=0;
var op=new Option(megye[x],x);
eval(document.megye_form.falu.options[x]=op);
}
}
[/script]
Na végre kezemben a PHP Fekete könyv. Korábban kértem a segítségeteket, hogy érdemes-e megvenni, ismeri-e valaki.
Nos, szerintem nagyon megéri az árát. több, mint hétszáz oldal, és egészen nagy alapú. (Majdnem akkora, mint egy A4-es.) Úgy látom mindenről elég részletesen ír, és a példák, amiket eddig átnéztem nagyon jók. Ajánlom mindenkinek.
Ha valaki vásárlás előtt áll, szívesen segítek neki abban, hogy ha rákérdez valamelyik témára megnézem a könyvben, mennyire részletesen írnak az adott témáról. (Az fenti linkről elérhető a könyv tartalomjegyzéke is)
megvallom nem ertem :), azaz azt ezen mi a kerdes? Feltelezve hogy a php valahonnan kiszedi a megyeket, es a megyek-hez tarsitva vannak valahol a varosok, igy atadva a megye parametert a php-nak, az oldal ujratoltodik es azt a varoslistat adja ki ami az adott megyehez tartozik. Gondolom nem 1 ilyen oldalt lattam mar te is :) Masik megoldas hogy nem kelljen ujratoltogetni az oldalt hogy javascript-et hasznalsz es ott toltesz fel tomboket, de ez mas tema, nem akarlak osszezavarni vele.
Elso lepcso:
$megyek = valamibol adott modon kiszedve a megyek, melyek selec-kent megjelennek, select neve legyen a megye, ertekei a megyek nevei, vagy kodjuk.
Ezen megye select es tobbi html kiiratasa ...
Masodik lepcso (ha user valasztott megyet):
if($megye) -> valamibol adott modon kiszedve a megye-hez tartozo varos, melyek selec-kent megjelennek, select neve legyen a varos, ertekei a varosok nevei, vagy kodjuk.
Harmadik lepes:
valamit kezdesz az itt felhalmozott infokka :)
Van egy form select-em, amiben megyéket lehet kiválasztani. Ezt követi egy másik form select, ami falvaknak a neveit tartalmazná. Azt szeretném, megcsinálni, hogy ha az első form select-ben kiválasztok egy megyét, akkor a következő selectbe azok a falvak töltődjenek be, amelyek az adott megyében megtalálhatóak. Értelemszerűen minden megyére a form más falvakkal töltődne be a következő selectben.
A kérdés az, hogy ez php-ben lehet megoldani, vagy van hozzá valami eseménykezelő. Melyikben elegánsabb?
Hajoacs
(-:
én most sem vagyok, csak most láttam, hogy már nem aktuális. azért remélem valaki tudja hasznosítani, amit leírtam, ha egyszer sikerül windows alatt felvarázsolni a php-t ! (-;
Most lehet, hogy én vagyok nagyon hülye az egéshez, de igy sem megy!
Most megen áloggatam a könyv alapján, odáig eljutpttam, hogy más a hiba üzenet! :))
Mégpeddig pontossan igy szól:
Bad Request
Your browser sent a request that this server could not understand.
Invalid URI in request GET /index.php HTTP/1.1
Valaki esteleg, megcsinálná nekem, hogy felrakja a PHP-t és az Apache-t a gépe C:\ meghajtójára, és betömöríti, aztán elküldi nekem a blint@axelero.hu címre, megnéztem betömörítve olyan 2 MB lenne, azthiszem ennyi ráfér a postafiokra. Nagyon megköszönném!!!
Most probaltam feltenni egy masik gepre a php-t, es nekem se mukodott, File not found volt nalam is. Vegul az oldotta meg, hogy a config-file-ban
ScriptAlias /php4/ "C:/Server/PHP/" helyett (ami az altalam ajanlott utmutatoban van, es amit kovettel)
ScriptAlias /php/ "C:/Server/PHP/" -et irtam. (vagyis a 4-est kivettem)
Es persze ujrainditas utan mar ment.
Van egy problema, amivel nem nagyon tudok mit kezdeni.
Van egy urlapom, rajta mondjuk 10 darab textarea, nev szerint: blokk1, blokk2, ..., blokk10.
Kellene irnom egy ciklust, ami vegignezni ezeket a textarea-kat es eldonti, hogy melyikbe irtak vmit.
Azt nem tudom, hogyan lehet dinamikusan legeneralni a textarea-k nevet (tehat $blokk + ciklusvaltozo), hogy ne 10x kelljen megcsinalnom kezzel az ellenorzest.
Most akkor ez megy?: http://127.0.0.1/proba.php ? Vagy hogy? :o) Amugy a tobbi internet eleresedhez nincs koze a sajat webszerverednek ami nalad fut:)
Amugy ha van valaki akinek van windozos apache es php-ja, az ideirhatna a sajat beallitasat, mert gyanus ez a not found /php/php.exe//proba.php.
Beírtam neki ezt: localhost://proba.php
Erre kiirta ezt: The requested URL /php/php.exe//proba.php was not found on this server.
Mondjuk az apache még azt irja ki amikor elindúl, hogy: Coult not determine the servers fully qualified domain name, usign 127.0.0.1 for Server name
Ez azt jelentené, hogy a domain név nem kóser, lényeges az? mert müködik a http://hálózati IP cím / ha neten vagyok, netes IP cím, Müködik a http://127.0.0.1 -el is. Ennek van köze a dologhoz?
Az apache config-ba keress meg 1 DocumentRoot nevu csodat, oda irj be valami C:\anyam_ahol_van utvonalat, majd abba a dir-be amit ide beirtal tegyed be a test.php-t es ird be a bongeszobe, miutan apache-ot ujraindiottad (ha futott volna), hogy: localhost://test.php es kesz.
Ha minden igaz, akkor egy .msi kiterjesztésû fájlod van, amire duplán kattintva elindul egy telepítõ program. Ha nem, akkor azonnal töltsd le a Windows Installert [http://www.microsoft.com/)!
A telepítõ egyes lépésein végighaladva értelemszerûen kitöltöd a mezõket:
Network Domain: localhost vagy szerver.hu
Server Name: localhost vayg www.szerver.hu
Ha már ki vannak töltve ezek a mezõk, akkor hagyd õket változatlanul!
Administrator's E-mail Address: értelemszerû
Service üzemmód az ajánlott a tapasztalatlanabbaknak, de aki tudja, hogy hogyan kell Apache-ot indítani, az próbálkozhat a második lehetõséggel.
Példánkban a telepítési mappa a C:\Server legyen!
2. lépés - a PHP telepítése
A letöltöt ZIP-fájl tartalmát csomagold ki C:\Server\PHP mappába. Mást nem kell tenned (esetleg ha a késõbbiekben nem mûködik a PHP, akkor a php.ini-t másold át a Windows könyvtáradba). Ez csak ennyi volt.
3. lépés - az Apache konfigurálása
Jó ha tudod, hogy az Apache az összes konfigurációs fájlt a conf nevezetû alkönyvtárban tárol. Nekünk innen most a httpd.conf kell. Ezt egy egszerû ASCII editorban szerkesztheted (pl. Jegyzettömb).
Keresd meg az blokkot és add hozzá a következõ sort:
ScriptAlias /php/ "C:/Server/PHP/"
(figyelem itt minden "\"-t "/"-nek kell írni!). Ezek után kb. így fog kinézni a dolog:
# Note [...]
Alias /icons/ "E:/Server/Apache/icons/"
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
AllowOverride None
Options None
Order allow,deny
Allow from all
Miután kész vagy ezzel, keress olyan sorokat, ahol a következõk találhatóak:
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
# For example, the PHP 3.x module (not part of the Apache distribution - see
# http://www.php.net) will typically use:
#
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
#
# And for PHP 4.x, use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php .phtml
#AddType application/x-httpd-php-source .phps
Az AddType-ok elõl töröld ki a # jeleket, így a régebbi (PHP3-as) és az újabb (PHP4-es) szkripteket is tudod futtatni.
Az utolsó tennivaló ebben a lépésben: vannak hasonló sorok a fájl vége felé,
# Action lets you define media types that will execute a script whenever
# a matching file is called. This eliminates the need for repeated URL
# pathnames for oft-used CGI file processors.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
Ez azért fontos, mert hogyha a látogató meghív egy php szkriptet, akkor azt elküldi a szerver (Apache) az értelmezõnek (PHP). Különben csak annyi jelenne meg, hogy le akarom-e tölteni az xyz.php-t.
Mondjuk ebbol: "The requested URL /php/php.exe/index.php was not found on this server. " csak az derul ki hogy hulyeseget irtal be, gondoltad a php.exe-nek kell atadni mint windoz alatt szokas dll-nek, de nem. Csak siman localhost://index.php es az index.php-t masold a DocumentRoot konyvtarba. A php.exe-t majd a webszerver hivja meg es csinalja amit kell.
ja igen, a php.exe tényleg nem lehet az elérési útban, viszont a hibaüzenet azt jelenti, hogy a) valamit igen nagyon elszúrtál a httpd.conf-ban, b) ha modulként akarod futtatni a php-t, akkor úgysem az exét kell beleírnod, hanem a dll-t. A php.exe sor a httpd.conf-ban a CGI mód-hoz kell...
_Blint_:
Azt írtad, az Apache működik. Tehát a http://localhost-ra kattintva bejön az Apache alapbeállított oldala?
Ha igen, és a php-t telepítetted, a php4ts.dll, és a php.ini fájlokat másold be a Windows/System32 könyvtárba, majd az Apache conf könyvtárában a httpd.conf fájlt kell szerkeszteni a következők szerint:
gondolom a következő kettő be van állítva:
DocumentRoot "D:/Webdesign" <- az a könyvtár, ahova a webszerver alapértelmezett fájljait rakod. figyelem! a windowsos \ helyett itt a webes /-t kell használni!
LoadModule php4_module "D:/apache/PHP 4.1.1/sapi/php4apache.dll"
<- illetve a php4apache.dll pontos elérési útja, ismét / a \ helyett!
AddType application/x-httpd-php .php .php3 .php4 .phtml
<- mindazok a végződések, amelyeket a php.exe értelmez majd.
Ja igen, a
DirectoryIndex sort is bővítsd ki például az index.php-vel. Ez az a fájl, amelyet az Apache alapértelmezettként kiküld (ha létezik), ha csak a könyvtárnevet adod meg (pl. http://localhost -> http://localhost/index.php)
Itt van egy php-s rész, a telepítésről elég egyértelmű leírás van. Egyébként nekem meg a Nem értek a számítástechnikához topikban magyarázták el a hogyanját.