몇 가지 확장 프로그램을 설치하려는 joomla 페이지가 있습니다. 그러나 chmod 권한으로 인해 패키지를 업로드하고 설치할 수 없습니다. 가이드 here을 따라 가면 플러그인을 설치하기 위해 폴더가 너무 많아서 어떤 권한을 변경해야하는지 알 수 있습니다.. 이를 위해 ftp_site()가 폴더의 CHMOD를 변경하지 않으려는 경우
나는 실제 스크립트 인해에 훨씬 더 큰 것을 유의하시기 바랍니다 필요한 각 폴더를 반복하고 0777.<?php
// SET THE DESIRED CHMOD VALUE
if ($_GET['chmod']) {
$ftp_chmod = $_GET['chmod'];
}
else {
$ftp_chmod = "0755";
}
echo "chmod=" . $ftp_chmod . '<br />';
echo getcwd() . '<br />';
$currdir = getcwd(); // get current directory
// ESTABLISH AN FTP LOGIN SESSION
$ftp_server='example.com';
$ftp_user='username';
$ftp_pass='*****';
$conn_id = ftp_connect("$ftp_server");
if (ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo 'FTP CONNECTION IS SUCCESSFULL <br />';
}
else {
echo 'BAD CREDENTIALS';
exit();
}
// Define the folders for which the CHMODE will change the values
// There must be a leading space in front of the path in order for CHMOD to work
$folder_path = array(
' ' . $currdir . '/modules/',
' ' . $currdir . '/plugins/'
' ' . $currdir . '/tmp/',
' ' . $currdir . '/cache/'
);
echo '<br />';
foreach ($folder_path as $key => $value)
{
$path = trim($value); // The leading space must be trimed fo is_dir() function to work
if (is_dir($path) == true) {
echo $path . ' -- ' . '<span style="color: #00B200">OK</span><br />';
echo 'CHMOD ' . $ftp_chmod . ' ' . $value . '<br />';
if (ftp_site($conn_id, 'CHMOD ' . $ftp_chmod . $value)) {
echo 'CHMOD ' . $ftp_chmod . ' IS <span style="color: #00B200">SUCCESSFULL</span><br /><br />';
}
else {
echo '<span style="color: crimson">CHMOD FAILED!</span><br /><br />';
}
}
else {
echo $path . ' -- ' . '<span style="color: crimson"><b>NOT EXIST</b></span><br />';
} // end if (is_dir($path) == true) else
} // end foreach ($folder_path as $key => $value)
ftp_close($conn_id);
?>
에 0775에서 권한을 변경하는 스크립트를 작성하고 변경해야하는 많은 폴더.
chmod=0777
/var/www/example/data/www/example.com
FTP CONNECTION IS SUCCESSFULL
/var/www/example/data/www/example.com/modules/ -- OK
CHMOD 0777 /var/www/example/data/www/example.com/modules/
CHMOD FAILED!
/var/www/example/data/www/example.com/plugins/ -- OK
CHMOD 0777 /var/www/example/data/www/example.com/plugins/
CHMOD FAILED!
/var/www/example/data/www/example.com/tmp/ -- OK
CHMOD 0777 /var/www/example/data/www/example.com/tmp/
CHMOD FAILED!
/var/www/example/data/www/example.com/cache/ -- OK
CHMOD 0777 /var/www/example/data/www/example.com/cache/
CHMOD FAILED!
사람이 가질 않습니다 : 내 서버에 스크립트를 실행하면$의 FOLDER_PATH에 표시된 폴더는 = 배열 ()내가 folowind 출력을 얻으려면, 예를 들어
있습니다 그래서 많은 폴더에 CHMOD 값을 변경하는 방법에 대한 의견이 있으십니까?
UPDATE :
나는 또한 내가 FTP 클라이언트를 통해 개별적으로 각 폴더에 chmod를 값을 변경하려고 한 것을 언급해야하고 성공적인이다. 문제는 스크립트를 통해 변경해야 할 때입니다. 루트 권한 액세스와 동일한 액세스은 FTP 클라이언트와 스크립트에서 파일을 변경하는 데 사용됩니다!
는, 당신이 그것을 업로드하고 서버에서 실행 할 수있는 PHP 스크립트를 작성할 수 있습니다 여기에
내가했던 변화? 웹 서버 사용자에게 권한을 부여하지 않았다면'exec ('sudo chmod 777 dir')'할 수 있습니까? – DaveRandomPHP를 통해 실행될 때 sudo가 필요한 암호를 어떻게 쿼리합니까? OP는 또한 FTP 클라이언트를 통한 chmod가 실제로 작동한다고 언급했기 때문에 webuser로 할 때 *는 작동하지 않습니다. * – codeling
@nyarlathotep'proc_open()'? 이것은 아파치 (또는 무엇이든) 사용자가 디렉토리를 소유하지 않은 경우에만 문제가 될 수 있습니다. – DaveRandom