Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  probleem php'ga märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 08.04.2012 18:05:06 probleem php'ga vasta tsitaadiga

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 icon_confused.gif
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 101
tagasi üles
vaata kasutaja infot saada privaatsõnum
matis
HV kasutaja
matis

liitunud: 12.04.2004




sõnum 08.04.2012 18:09:30 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 08.04.2012 18:12:15 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 08.04.2012 18:27:48 vasta tsitaadiga

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 icon_eek.gif icon_confused.gif

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
vaata kasutaja infot saada privaatsõnum
lepar
HV kasutaja

liitunud: 27.11.2006




sõnum 09.04.2012 09:50:48 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 09.04.2012 11:25:23 vasta tsitaadiga

lepar, http://php.net/manual/en/function.getcwd.php
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 09.04.2012 11:29:27 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 09.04.2012 18:56:44 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 09.04.2012 19:34:46 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
19Mart94
HV kasutaja

liitunud: 22.06.2010



Autoriseeritud ID-kaardiga

sõnum 11.04.2012 18:01:45 vasta tsitaadiga


require (realpath("..\\")."\xxx.php");


Ei tööta? thumbs_up.gif
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 20.04.2012 17:52:20 vasta tsitaadiga

sain juba tööle require("../file.php"), toimib kenasti.
Sain süsteemile pihta ka thumbs_up.gif
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 101
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  probleem php'ga
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.