Versio

ftp_chmod

Overzicht Reageren

Jesper Diovo

Jesper Diovo

11/08/2008 14:27:00
Quote Anchor link
Ik probeer via ftp de map waar iets in geupload moet worden te chmodden naar 777. Na het uploaden wil ik de map weer dichtgooien naar 755. Nu gaat alles goed, behalve dat chmodden: er wordt verbinding gemaakt, etc. etc, maar als ik de opdracht ga versturen geeft hij een fout. Dit is de functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
function ftp_dochmod($path, $mode) {
    //$path is '../media/uploads/'
    $server = ''; // ftp server
    $connection = ftp_connect($server); // connection
    
    if(preg_match('~\.\.\/~', $path))
        $path = str_replace("../", "", $path);
    
    if(substr($path, strlen($path)-1, 1) == '/') {
        $path = substr($path, 0, strlen($path)-1);
    }

    
    $fullroot = $_SERVER['DOCUMENT_ROOT'].'/'.$path;
    
    // login to ftp server
    $user = "";
    $pass = "";
    $result = ftp_login($connection, $user, $pass);
    
    // check if connection was made
    if ((!$connection) || (!$result)) {
        return false;
    }
else {
        ftp_site($connection, "CHMOD 0".$mode." ".$fullroot."") or die("FTP SITE CMD failed.");
    }

    
    ftp_close($connection); // close connection
}
?>


De functie ftp_dochmod() is een functie die connectie maakt met de ftp en dan chmod. Als ik zo chmod() gebruikte, werkte dat namelijk niet.

De fout die ik krijg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: ftp_site() [function.ftp-site]: /(...)/public_html/media/uploads: No such file or directory in /(...)/public_html/admin/pages/media/media.php on line 109


Eigenlijk een onmogelijke fout. /(...)/public_html/media/uploads bestaat. Volgens php.net moet die laatste / weg (na uploads), al maakte dat niet veel uit.

Vanaf public_html wordt er twee kanten opgesplitst: admin en media. Ik wil nu vanaf een pagina in de admin dingetjes gaan uploaden naar media, zoals vast al wel duidelijk was. Volgens php.net heeft de functie ftp_site() de volle root nodig: /(...)/public_html/media/uploads. Maar hij doet niets. Hij chmod niet en zegt dus dat die map/dat bestand niet bestaat, terwijl dat wel zo is...

Iemand een oplossing?

Alvast bedankt,
- Jezpur
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
PHP hulp

PHP hulp

24/05/2012 18:10:37
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Pieter Boussaer

Pieter Boussaer

11/08/2008 18:11:00
Quote Anchor link
Je hebt toch ook een standaart functie van ftp_chmod()

kijk op php.net
 
Jesper Diovo

Jesper Diovo

12/08/2008 10:33:00
Quote Anchor link
Pieter schreef op 11.08.2008 18:11:
Je hebt toch ook een standaart functie van ftp_chmod()

kijk op php.net

Ich weiß, maar ook die geeft dezelfde fout. Overigens moet je alvorens het gebruik van ftp_chmod() óók verbinding maken, komt dus uiteindelijk op hetzelfde neer.

Edit: overigens heb ik het een beetje veranderd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
function ftp_dochmod($path, $mode) {
    //$path is '../media/uploads/'
    $server = ''; // ftp server
    $connection = ftp_connect($server); // connection
    
    if(preg_match('~\.\.\/~', $path))
        $path = str_replace("../", $_SERVER['DOCUMENT_ROOT'].'/', $path);
    if(substr($path, strlen($path)-1, 1) == '/')
        $path = substr($path, 0, strlen($path)-1);
    
    // login to ftp server
    $user = "";
    $pass = "";
    $result = ftp_login($connection, $user, $pass);
    
    // check if connection was made
    if ((!$connection) || (!$result)) {
        return false;
    }
else {
        ftp_site($connection, "CHMOD ".$mode." ".$path."") or die("FTP SITE CMD failed.");
    }

    
    ftp_close($connection); // close connection
}
?>

Nog steeds geen positief resultaat...
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 



Overzicht Reageren