Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
RassK
HV Guru

liitunud: 17.01.2007
|
08.04.2012 18:05:06
probleem php'ga |
|
|
Peakasutas on fail xxx.php, ning peakaustas on neid kaustu veel, kus on failid, mis seda config.php faili kasutavad.
oletame, et on kaust "kaust1", kus on php failid ning funktsioon require("xxx.php"); neis töötab.
Peale selle on peakasutas veel kaust "kaust2", kus php failides funktsioon require("xxx.php"); enam faili kätte ei saa.
Alguses töötas kõik kenasti kui nood "kaust2" kaustas olevad php failid olid ka peakaustas. Kuna failimajandus muutus suht pornoks siis sai antud failid uude kausta tõstetud.
Peale seda on mingi kepp...
ideid?
Lihtne lahendus oleks kopeerida xxx.php kausta "kaust2". Kuid ma ei saa aru miks ta seda faili peakaustast kätte ei saa
|
|
Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
tagasi üles |
|
 |
matis
HV kasutaja

liitunud: 12.04.2004
|
08.04.2012 18:09:30
|
|
|
Ega siin midagi ei olegi teha, kui faili xxx.php tõstad kausta "kaust2", siis tuleb ka require ringi teha:
require('kaust2/xxx.php');
Selleks, et pärast sellist ringitegemist vältida, tuleks kohe alguses püüda tekitada mingi loogiline kaustastruktuur.
Mida veel võiks proovida on see:
http://php.net/manual/en/language.oop5.autoload.php
Eriti mõttekas on see siis, kui iga PHP fail on eraldi klass, siis on võimalik nii teha, et ainult peafailis on require statement, ning igalpool mujal laetakse vajalik fail juba automaatselt.
Zend Framework kasutab taolist loogikat.
_________________ https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html |
|
Kommentaarid: 64 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
60 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
08.04.2012 18:12:15
|
|
|
Kui sul on juurkaust, selles xxx.php ning kaustad kaust1 ja kaust2, siis ei saagi kaust2 all olevas failis require("xxx.php"); ju töötada.. peaks olema require("../xxx.php");
Miks ta sul kaust1 puhul töötab, ei oskagi öelda .. ega sul seal kaust1 all eraldi xxx.php faili pole?
Eraldi teema on muidugi include_path seadistusega mängimine, mis seda käitumist muuta võib, kui ma asjust õigesti aru saan.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
RassK
HV Guru

liitunud: 17.01.2007
|
08.04.2012 18:27:48
|
|
|
Fukiku kirjutas: |
Kui sul on juurkaust, selles xxx.php ning kaustad kaust1 ja kaust2, siis ei saagi kaust2 all olevas failis require("xxx.php"); ju töötada.. peaks olema require("../xxx.php");
Miks ta sul kaust1 puhul töötab, ei oskagi öelda .. ega sul seal kaust1 all eraldi xxx.php faili pole?
Eraldi teema on muidugi include_path seadistusega mängimine, mis seda käitumist muuta võib, kui ma asjust õigesti aru saan. |
ka see alamkataloogi minek "../" on juba läbi proovitud ja ei tööta.
ma ei oska öelda aga mul töötab ka nii kui on 2 taseme kaust ala juur -> kaust1 -> kaust1_sub ning seal on kutsutud funktsioon require("xxx.php");
ed: siiski just selle kataloogi puhul asi töötab nii
matis kirjutas: |
Ega siin midagi ei olegi teha, kui faili xxx.php tõstad kausta "kaust2", siis tuleb ka require ringi teha:
require('kaust2/xxx.php');
Selleks, et pärast sellist ringitegemist vältida, tuleks kohe alguses püüda tekitada mingi loogiline kaustastruktuur.
Mida veel võiks proovida on see:
http://php.net/manual/en/language.oop5.autoload.php
Eriti mõttekas on see siis, kui iga PHP fail on eraldi klass, siis on võimalik nii teha, et ainult peafailis on require statement, ning igalpool mujal laetakse vajalik fail juba automaatselt.
Zend Framework kasutab taolist loogikat. |
kui tõstan xxx.php kausta "kaust2" siis töötab require("xxx.php") samuti.
Tänud vihjete eest, uurin neid.
|
|
Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
tagasi üles |
|
 |
lepar
HV kasutaja
liitunud: 27.11.2006
|
09.04.2012 09:50:48
|
|
|
Kasuta konstante, kus on defineeritud aboluutne kaustatee. Nii on tulevikus lihtne ühest kohast neid muuta.
define('wpath','/home/www/');
require(wpath.'kaust2');
|
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
12 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
09.04.2012 11:29:27
|
|
|
Nagu ise ütlesid, klassidega saab edukalt autoload'i kasutada. Kui vahel töötab, vaata üle kust seda tegelikult välja kutsutakse.
Kui on näiteks z.php, selle sees include('y.php') ja y.php sees omakorda requeire('xxx.php') siis xxx.php asukohta vaadatakse ikka z.php mitte y.php suhtes. Kui on juba paras hulk faile, mis seda xxx.php-d kasutavad ja kõike muuta ei viitsi, siis üks võimalik lahendus on ka symlink. Eks sellega mõned aga-d muidugi on nagu näiteks see, et kui kasut2 sees on symlink ja keegi seda faili muutma läheb, siis ei pruugi ta märgata, et tegemist on symlink-ga ja kirjutada sinna midagi, mis seal olema ei peaks, samuti võib kataloogide kopeerimisel mõni vahend(näiteks juhul kui kaust on sambaga win masinatele välja jagatud) sellest mitte aru saada ja teha tuimalt igasse kausta eraldi koopia.
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
RassK
HV Guru

liitunud: 17.01.2007
|
09.04.2012 18:56:44
|
|
|
napoleon kirjutas: |
Nagu ise ütlesid, klassidega saab edukalt autoload'i kasutada. Kui vahel töötab, vaata üle kust seda tegelikult välja kutsutakse.
Kui on näiteks z.php, selle sees include('y.php') ja y.php sees omakorda requeire('xxx.php') siis xxx.php asukohta vaadatakse ikka z.php mitte y.php suhtes. Kui on juba paras hulk faile, mis seda xxx.php-d kasutavad ja kõike muuta ei viitsi, siis üks võimalik lahendus on ka symlink. Eks sellega mõned aga-d muidugi on nagu näiteks see, et kui kasut2 sees on symlink ja keegi seda faili muutma läheb, siis ei pruugi ta märgata, et tegemist on symlink-ga ja kirjutada sinna midagi, mis seal olema ei peaks, samuti võib kataloogide kopeerimisel mõni vahend(näiteks juhul kui kaust on sambaga win masinatele välja jagatud) sellest mitte aru saada ja teha tuimalt igasse kausta eraldi koopia. |
Ma jäin just ise ka mõtlema, et kuna mul mitmes kohas lihtsalt sisse include'itud, siis arvatavasti selle pärast ka see jama kuna ma kaotasin järje, mis tasandil olen.
|
|
Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
09.04.2012 19:34:46
|
|
|
kui järg käest ära läheb, siis kõige lihtsam debugimisvahend on echo '<pre>';print_r($GLOBALS);echo '</pre>'; või kui kõiki muutujaid tahad, siis $GLOBALS asemel get_defined_vars()
Kui seda live keskkonnas võib sinna igaks ka mingi tingimuse lisada, et seda igaühele ei väljastataks. Samuti võib sulle huvi pakkuda debug_backtrace funktsioon
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
19Mart94
HV kasutaja
liitunud: 22.06.2010
|
11.04.2012 18:01:45
|
|
|
require (realpath("..\\")."\xxx.php");
|
Ei tööta?
|
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
31 |
|
tagasi üles |
|
 |
RassK
HV Guru

liitunud: 17.01.2007
|
20.04.2012 17:52:20
|
|
|
sain juba tööle require("../file.php"), toimib kenasti.
Sain süsteemile pihta ka
|
|
Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
tagasi üles |
|
 |
|