Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php] is_readable

Gooly
6 antwoorden
  • Dat ik hier nog eens tegenaan zou lopen. Ik heb het gevoel dat ik weer teruggeworpen wordt naar mijn begintijd binnen PHP :-)

    Ik ben (nog steeds, zie andere post) bezig met een scriptje dat de inhoud van een directory als HTML lijst kan presenteren.
    Nu wil ik de optie inbouwen om er automagisch achors/linkjes van te maken.

    Maar het leek me nuttig om, voordat ik van alles een linkje maak, eerst even te checken of de betreffende file wel readable is. Anders heeft een downloadlink weinig zin.

    Zo gezegd zo gedaan, dus ik bouw er heel simpel een 'is_readable' statement in:
    [code:1:213298bdd0]
    if ($makelinks == true && is_readable($fileName))
    // plaats een anchor tag
    [/code:1:213298bdd0]

    Maar nu krijg ik steeds 'false' als resultaat uit is_readable . De bestanden blijken niet readable te zijn.

    Echter en edoch hebben deze bestanden 644 rechten en de directory zelf heeft 755. In beide gevallen staan alle 'R's dus aan voor alle partijen. Hartstikke readable zou je zeggen toch?

    Ook als ik de readable check er uit sloop en simpelweg de anchors gewoon aan maak, dan zijn deze bestanden gewoon te donwloaden, geen enkel probleem.

    Na deze uitgebreide uiteenzetting is mijn vraag kort:
    Waar zit mijn denkfout?
  • Zit het niet in de haakjes? Ofwel, moet het niet zo zijn?

    [code:1:70d54951a9]if ( ($makelinks == true) && (is_readable($fileName)) )[/code:1:70d54951a9]
    En heb je de [b:70d54951a9]is_readable[/b:70d54951a9] al geïsoleerd van de rest om het resultaat te testen?
  • Dat met die haakjes had ik niet gedaan, maar ik heb hem wel geisoleerd.
    Als ik de hele directory in een loop doorloop met:
    [code:1:737056cb15]
    if (is_readable($fileName))
    echo $fileName." is leesbaar";
    else
    echo $fileName." is NIET leesbaar";
    [/code:1:737056cb15]

    Dan levert dat slechts: "is NIET leesbaar" op
  • Wat is de waarde van $fileName? Enkel de bestandsnaam of de bestandsnaam met het complete pad (relatief of absoluut)?
  • Enkel de bestandsnaam met de extensie.
    Dus:

    IMG_1003_kl.jpg is NIET leesbaar
    changelog.txt is NIET leesbaar
    summary.markdown is NIET leesbaar

    [edit]
    Opgelost!
    Na deze reactie kwam ik op het idee om het pad er voor te plakken, en dan werkt het wel zoals verwacht! Logisch ook eigenlijk :-)
    Bedankt Supersnail en Ger!
    [edit]
  • Nog even een tipje aan de hand van je code voorbeeld:

    if ($makelinks == true)

    kan je ook simpeler schrijven:

    if ($makelink)

    makeLink is namelijk true of false en de check met of deze true is geeft hetzelfde resultaat

    dus:

    if(true/false == true) is hetzelfde als if(true/false)..

    scheelt weer redudante code.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.