file_exists werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

18/05/2022 15:36:47
Quote Anchor link
Ik wil het volgende doen::

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (file_exists($path.'.jpg'))
    {
    $ext = 'jpg';    
    }


Het bestand bestaat gewoon en heeft 777 rechten.
openbase dir staat uit voor het domein.
Het gaat dus om een plaatje dat op een ander domein staat dus buiten de document root.

ini_set('display_errors',1);
geeft geen enkele error.

Hoe kan ik dit debuggen?
 
PHP hulp

PHP hulp

27/06/2022 17:39:32
 
Adoptive Solution

Adoptive Solution

18/05/2022 16:19:39
Quote Anchor link
Het bestand kan wel bestaan met de juiste rechten, maar heeft $path die ook.
Bekijk het vanuit de server. Die moet erbij kunnen.
 
Ozzie PHP

Ozzie PHP

18/05/2022 16:39:27
Quote Anchor link
Heb je wel het volledige path opgegeven vanuit de root? Zoiets als:

/var/www/mijnsite.nl/mijnfolder/plaatje.jpg

of /home/mijnsite.nl/mijnfolder/plaatje.jpg
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 17:12:25
Quote Anchor link
absoluut het pad is:

/home/xxxxx/domains/xxxxxxxx.nl/private_html/images/producten/m_2077361070_image.jpg

En die bestaat, dat pad is correct. zo vreemd dit.
Gewijzigd op 18/05/2022 17:12:53 door Daniel van Seggelen
 
- Ariën  -
Beheerder

- Ariën -

18/05/2022 17:23:09
Quote Anchor link
Maar pas je dit pad ook toe in file_exists?

Draai je dit vanuit een cronjob of als los script?
Gewijzigd op 18/05/2022 17:25:03 door - Ariën -
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 17:31:54
Quote Anchor link
Jazeker, natuurlijk pas ik dit pad toe.

Nu apart in een bestand krijg ik weer dit, was eerst weg.

Quote:
<b>Warning</b>: file_exists(): open_basedir restriction in effect. File(/home/xx/domains/xx.nl/private_html/images/producten/m_2077361070_image.jpg) is not within the allowed path(s):


Update,

nu heb ik openbase_dir uitgezet naar het doel pad waar de plaatjes staan en ook de bron site waar de verwijzing staat. Nu krijg ik geen foutmelding. maar hij bestaat niet.

deze code

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (file_exists('/home/xx/domains/xx.nl/private_html/images/producten/m_2077361070_image.jpg'))
{
echo 'bestaat';    
}


in DA open open_base restrictions in het doeldomein uitgezet bij: Custom HTTPD Configurations
Maar bestaat komt maar niet.
Gewijzigd op 18/05/2022 17:33:27 door Daniel van Seggelen
 
- Ariën  -
Beheerder

- Ariën -

18/05/2022 17:49:56
Quote Anchor link
Weet je zeker dat het private_html is? Vaak wordt dit gesymlinkt met public_html.
Gewijzigd op 18/05/2022 17:50:16 door - Ariën -
 
Adoptive Solution

Adoptive Solution

18/05/2022 18:10:29
Quote Anchor link
Misschien is toegang tot een ander domein niet toegestaan.
Ook al is het je eigen domein.
Haal dat plaatje anders op met curl of file_get_contents :
https://www.php.net/manual/en/function.file-get-contents.php
 
Ozzie PHP

Ozzie PHP

18/05/2022 18:12:59
Quote Anchor link
Ik lees dat de resultaten van file_exists worden gecachet. Probeer voor de zekerheid die cache eens te wissen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

clearstatcache();

if (file_exists('/home/xx/domains/xx.nl/private_html/images/producten/m_2077361070_image.jpg'))
{

echo 'bestaat';    
}


?>
 
Adoptive Solution

Adoptive Solution

18/05/2022 18:23:53
Quote Anchor link
Voorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$plaatje = file_get_contents('http://url/naar/images/producten/m_2077361070_image.jpg');
header("Content-Type: image/jpeg");
header('Content-Disposition: attachment; filename="plaatje');
echo($plaatje);
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 19:39:59
Quote Anchor link
Gedaan en helemaal noppes.

Snap er helemaal niks meer van.
 
- Ariën  -
Beheerder

- Ariën -

18/05/2022 19:50:15
Quote Anchor link
Ik denk dat je niet de eigenaar bent van dat bestand op filesystem niveau.
Anders had ik ook op een hostingserver kunnen unlink()'en naar: /home/pietje/domains/pietje.nl/private_html/index.php.

Zo te zien gebruik je DirectAdmin, en in de filemanager kan je de ownership resetten.
Je kan dit ook via SSH doen, als dat aanstaat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
chown -R JOUW_USER:JOUW_USER /home/JOUW_USER/domains/DOMEIN.NL/public_html/*
Gewijzigd op 18/05/2022 19:52:03 door - Ariën -
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 19:52:06
Quote Anchor link
Ik had met chown al in rood de ownership van het bestand al aangepast naar:
CHOWN bronnaam:bronnaam de groep en eigenaar.
Bronnaam is dan de gebruiker van waar het bestand van opgevraagd word. Ook dit werkt niet.
 
- Ariën  -
Beheerder

- Ariën -

18/05/2022 19:53:43
Quote Anchor link
Maar heb je al in de Filemanager de ownership kunnen resetten?
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 19:57:07
Quote Anchor link
De ownships staan al correct, op dezelfde voor alle plaatjes ook.
Het gaat erom dat een andere user op dezelfde server toagang tot deze plaatjes moet hebben.

Moet ik die dan niet in de groep doen zoals:

chown -R DOELUSER:JOUW_USER /home/DOEL_USER/domains/DOMEIN.NL/public_html/*
 
- Ariën  -
Beheerder

- Ariën -

18/05/2022 20:00:17
Quote Anchor link
Je, dan moet die domein ook in die groep zitten.

Maar waarom zijn er eigenlijk twee verschillende users? Je kan toch ook onder één user verschillende domeinen aanmaken?
Dat lijkt mij logischer. Dan hoef je niet zulke aanpassingen te doen, die mogelijk misschien zelfs met DirectAdmin schuren.
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2022 20:11:46
Quote Anchor link
dan doet hij het wel idd. in hetzelfde user, thanks
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.