Toon posts:

[php] uploaden van subdomein naar hoofddomein

Pagina: 1
Acties:
  • 70 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een domein draaien op http://www.website.nl
Daarnaast wil ik mijn CMS draaien op https://cms.website.nl
Nu lukt dit prima in plesk door een subdomein aan te maken en het cms te uploaden naar de httpsdocs.

Nu wil ik dus in dat CMS afbeeldingen kunnen uploaden.
Echter deze moeten worden geplaats in http://www.website.nl/img/

Maar je zit dus met de verschillende document_roots van het subdomein en het hoofddomein.

Ik heb dus eerst maar even een proef script gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
</head>

<body>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="uploadform" id="uploadform">
  <input type="file" name="file" />
  <input type="submit" name="Submit" value="Submit" />
</form>
<?
if(isset($_POST['Submit'])){    
    if (is_uploaded_file($_FILES['file']['tmp_name'])) {
        copy($_FILES['file']['tmp_name'], '/var/www/vhosts/website.nl/httpdocs/img/' . $_FILES['file']['name']);
    }else{
        echo "Mogelijke aanval gespot: " . $_FILES['file']['name'];
    }
}
?>
</body>
</html>


Nu krijg ik echter de volgende foutmelding:
Warning: copy(): open_basedir restriction in effect. File(/var/www/vhosts/website.nl/httpdocs/img/ka.jpg) is not within the allowed path(s): (/var/www/vhosts/website.nl/subdomains/cms/httpsdocs:/tmp) in /var/www/vhosts/website.nl/subdomains/cms/httpsdocs/upload.php on line 16

Warning: copy(/var/www/vhosts/website.nl/httpdocs/img/ka.jpg): failed to open stream: Operation not permitted in /var/www/vhosts/website.nl/subdomains/cms/httpsdocs/upload.php on line 16
Dus ik dacht dat ik met ini_set dan de document_root wel zou kunnen toevoegen (lekker naief) aan het standaard include path met
PHP:
1
ini_set('include_path', '/var/www/vhosts/website.nl/httpdocs/img/' . PATH_SEPARATOR . ini_get('include_path'));


Maar dan krijg ik nog steeds dezelfde foutmelding.

Weet iemand wellicht hoe ik dit op kan lossen, of is het simpelweg onmogelijk om te uploaden vanuit een https-subdomein naar een http-hoofddomein?

  • Solopher
  • Registratie: December 2002
  • Laatst online: 19-02 08:43
Misschien een simpele vraag:
Kun je geen sub2dir aanmaken?

Dus dat het eigenlijk: http://www.website.nl/cms is, maar dan dus: http://cms.website.nl/ wordt.
Je kunt dan eenvoudig ../ naar de bovenliggende directory.

Dus ../img, de meeste hosting providers ondersteunen dit wel, hopelijk die van jou ook.

Verwijderd

Topicstarter
Ja dat zou kunnen maar ik wil eigenlijk de website en cms strict gescheiden houden.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Waarom wil je dat scheiden als ze toch functioneel van elkaar afhankelijk zijn?

Je zou kunnen overwegen het spul eerst te uploaden en dan met PHP via FTP op de andere server te zetten, maar ik heb wel eens praktischere dingen gezien.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
omdat ik het cms regel en anderen de website

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:28

crisp

Devver

Pixelated

Als het dezelfde server betreft kan je toch gewoon vanuit de webroot van je site symlinken naar de upload dir van je CMS webroot?

Intentionally left blank


Verwijderd

Topicstarter
ja dat dacht ik ook (en dat doe ik toch ook in dat scriptje?), maar ik krijg dus echt een foutmelding...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Misschien moet je eens opzoeken wat een symlink is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 00:09

Janoz

Moderator Devschuur®

!litemod

Nee, dat doe je niet in het scriptje. Symbolic links regel je op OS niveau. Ook de security zul je op OS niveau moeten regelen of via de instellingen in php.

Open_basedir restriction kunnen omzeilen middels een extra regeltje in je php script zou die beveiliging natuurlijk behoorlijk nutteloos maken.

Dit probleem heeft verder helemaal niks met programmeren te maken. Over de beperkingen van Open_basedir_Restriction is genoeg te vinden in de php manual en het aanmaken van symbolic links is basis os kennis.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.