いくつかの拡張機能をインストールしたい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から権限を変更するスクリプトを作成しています多くのフォルダを変更する必要があります。$ folder_path =配列()に示すフォルダは
一例であり、私は自分のサーバー上でスクリプトを実行するとき、私はfolowind出力を得る:
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!
を誰もが持っていますどのくらいのサイズでCHMOD値を変更するかについてのご意見はありますか?
UPDATE:
私も、私はFTPクライアントを経由して、個別に各フォルダにCHMOD値を変更しようとしたことを言及する必要があり、それが成功しています。問題は、私がスクリプトを通してそれらを変更しなければならないときに来る。 root権限アクセスと同じaccは、FTPクライアントとスクリプトからファイルを変更するために使用されます。
ではなくFTP経由でのchmodをやろうと、あなたは、それを行うためのPHPスクリプトを書き、それをアップロードして、サーバー上で実行するだろうか?あなたのWebサーバユーザがそれをやる権限を持っていなければ 'exec( 'sudo chmod 777 dir')'できますか? – DaveRandom
phpで実行されたときにsudoがどのようにパスワードを要求しますか? OPはまた、FTPクライアント経由のchmodが実際に動作することを言いますので、webuserとしてみてください* – codeling
@nyarlathotep 'proc_open()'それでは?これは、Apache(または何でも)のユーザーがディレクトリを所有していない場合にのみ問題になります。 – DaveRandom