Nyt on hyvät neuvot kalliit. Onkelmana on se ettei kansion sisältämien tiedostojen nimiä pysty hakemaan funktioiden avulla, esim. tuo opendir. Tarkoituksena on generoida kansion sisältämiin tiedostoihin linkkilista. Jos kansioon lisätään uusi tiedosto, listautuu se automaattisesti php sivua ladattaessa.
Mielenkiintoiseksi asian tekee se, että jos manuaalisesti koodiin lisään linkin tulostuksen, se pelaa aivan mainiosti. Oikeudet olen antanut jokapaikkaan kaikille.
Pdf -tiedostot joita listaan, ovat toisella serverillä ja php toisella. Esim is_dir väittää ettei hakemisto ole hakemisto, eli palauttaa false. Olen kokeillut ip osoitteella ja ilman. Onko vika jotenkin php:n asetuksissa?
Warning: opendir(\\Server1\Inetpub\wwwroot) [function.opendir]: failed to open dir: Invalid argument in C:\Inetpub\wwwroot\Infot\Lista.php on line 52
Tämmöistä komenttia pukkaa...
Mielenkiintoiseksi asian tekee se, että jos manuaalisesti koodiin lisään linkin tulostuksen, se pelaa aivan mainiosti. Oikeudet olen antanut jokapaikkaan kaikille.
Pdf -tiedostot joita listaan, ovat toisella serverillä ja php toisella. Esim is_dir väittää ettei hakemisto ole hakemisto, eli palauttaa false. Olen kokeillut ip osoitteella ja ilman. Onko vika jotenkin php:n asetuksissa?
Warning: opendir(\\Server1\Inetpub\wwwroot) [function.opendir]: failed to open dir: Invalid argument in C:\Inetpub\wwwroot\Infot\Lista.php on line 52
Tämmöistä komenttia pukkaa...
Vastaukset 8
Vanhimmat
Tämä on ihan arvaus, mutta koita käyttää hakemistoerottimina merkkiä "/" "\"-merkin sijaan.
Testaan tuota vaikkakin kovasti epäilen, koska silloin kun Pdf kirjasto oli toisella palvelimella sama koodi pelasi moitteetta. Nyt uudella palvelimella polkujen nimien vaihdon jälkeen ei onnistu. Molemmat palvelimet ovat intrassa. Ymmärrys loppuu koska tosiaan kiinteästi koodattu linkki pelaa.
Näin siis:
Print("linkki");
Vanhalla serverillä kuten uudella on server 2003.
Itseasiassa tossa ei ole mitään vikaa kaikki pelaa oikein, PHP:hän ei pääse käsiksi toisen palvelimen tietoihin tämähän olisi jo turvallisuus riskikin. Tarkoitan siis noita glob, is_dir jne.... functioita, niillä saa näkyviin vain saman palvelimen tiedostot jne.... missä koodi suoritetaan.
Vaikka tiedostot olisi eri palvelimella ja koodin sisältävä palvelin näkee sen verkkolevynä niin silloin toimii myös, verkkolevyjä käsitellään samalla tapaa kuin ne olisi palvelimen omia. Harkitse tätä, mikäli saat muokata asetuksia vapaasti, ja tilanne sen sallii. Tietenkin edellyttäen, että tiedät mitä teet.
Yks keino on, että sallit hakemistolistauksen toisella serverillä ja teet scriptin joka muokkaa siitä halutun laisen, ellet halua suoraan hakemisto listausta näyttää.
Tai sitten lähetät toiselta serveriltä toiselle ajastetusti tiedot mitä tiedostoja sillä on ja niiden mukaan teet listaukset.
Ton jutun voi tehdä monella muullakin tavalla, riippuu miten tiedostoja lisätään, käyttötarkoituksesta jne...
*Ymmärrys loppuu koska tosiaan kiinteästi koodattu linkki pelaa.*
Kiinteästi koodattu linkki pelaa, koska olet tällöin selaimella yhteydessä suoraan palvelimeen 2, eikä palvelin 1 yritä käpistellä palvelimen 2 tiedostoja.
En vain jostain syystä saa listattua tiedostoja. Resurssien hallinnan kautta toisen serverin kansio kyllä näkyy ja on mäpätty I:ksi mutta jos polkuparametrina käytän oheista
$path = ("I:\\2005");
ei tunnista edelleen hakemistoksi. Onko vielä jotain asetuksia joita täytyy huolehtia. Oikeuksina olen koittanut everyonea ja full controllia lukuunottamatta kaikki oikeudet.
Entäs mainitsemasi hakemistolistaus tai ajastettu lähetys? Tekniikka meinaan, miten?
Epätoivo kasvaa...
Nyt tarkemmin tota virheilmoitusta tutkien, se valittaa virheellisestä komennosta, tätähän se ei antaisi jos ei löytäisi tiedostoa tai käyttöoikeudet ei riittäisi.
Epäilen, että syy on koodissasi olethan tietoinen että " " merkien sisällä \ on erikoismerkki?
Esim "I:\\2005" onkin I:\2005 (koska kumoat \ merkilla \ merkin vaikutuksen.
Toinen esimerkki
"I:\\user\niilo" onkin I:\user\(rivinvaihto)iilo
sillä \n merkitsee rivinvaihtoa ja monella muullakin kirjaimella on erikoisuuksia.
joten käytä aina \\ tai sitten laitat ' ' merkkien sisään, joka onkin parempa tässä tapauksessa
esim
'I:\\user\niilo' on sama minkä kirjoititkin
Ennen kuin lähetään kokeilemaan noita toisia juttuja niin kokeileppas ihan tämmöistä koodia, ei mitään muuta samassa php tiedostossa.
Muuta sitten tohon oikea hakemisto xxxx tilalle, anna olla /*.* perässä listaa kaikki tiedostot muutenkin glob parempa kuin opendir.... *.pdf listaa kaikki pdf tiedostot
Nyt on hieman kiire, joten en kerkee pölöttää noista muista jutuista.
*"I:\\user\niilo" onkin I:\user\(rivinvaihto)iilo*
Hups, eipäs kun I:\user(rivinvaihto)iilo
Kiitos jo näin etu takakäteen ajastasi ja vaivan näöstäsi.
Ei onnistu. Koodilla,
saan print tulosteen näytölle
I:\2005\*.*
ja varoituksen
Warning: Invalid argument supplied for foreach() in C:\Inetpub\wwwroot\test3.php on line 6
tuolla toisella polkumäärittelyllä listaa siististi wwwrootin sisällön. Myöskään
$x = 'I:\*.*';
ei anna toivottua tulosta.
Tuossa tuo opendir functio on turhaan, glob hoitaa kaiken.
Onko ihan varmaan I asema määritelty?
Ettei vain olisi, että resursienhallinta millä kokeilit yhdistää vasta sitten kun asemaa tarvitaan ja katkaisee yhteyden kun on käyttämättä?
Pääsetkö esim komentorivillä myös I:hin käsiksi?
Pyöriikö palvelin ohjelmistot samalla tunnuksella kuin resursienhallinta millä kokeilit?
Löytyykö palvelin 2 logeista jotain virheilmoitusta jne....?
Oma tietämykseni näistä verkko asioista on huono joten nämä ovat lähinnä arvauksia. Koitappas www.mureakuha.com sieltä luulis tietämystä enemmän löytyvän tähän ongelmaan.
*hakemistolistaus*
Tarkoitin, jos palvelin 2 pyörii esim apache tai jokin vastaava ja sallit hakemistolistauksen näkyä ja sitten teet palvelin 1 scriptin joka noutaa sen ja näyttää halutussa muodossa, onnistuu vaikka toi sinun juttu ei toimi.
*ajastettu lähetys*
Teet palvelin 2:lle scriptin joka listaa halutut tiedostot ja lähettää tuloksen vaikkapa txt tiedostona palvelin 1:lle, laitat tämän ajastetusti tapahtumaan vaikkapa kerran tunnissa, ajastukseen löytyy valmis työkalukin Windowsista.
Sitten palvelin 1:lla vain parsit tiedoston haluttuun muotoon, tosin voishan sen palvelin 2:lla tehdä ja lähettää valmiin sivunkin.