ftp_chmod
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:
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:
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
Code (php)
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
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
}
?>
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)
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
Gesponsorde koppelingen:
Je hebt toch ook een standaart functie van ftp_chmod()
kijk op php.net
kijk op php.net
Pieter schreef op 11.08.2008 18:11:
Je hebt toch ook een standaart functie van ftp_chmod()
kijk op php.net
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)
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
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
}
?>
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



