回答:
Linuxホスティングでのファイルとフォルダーのアクセス許可の問題には、いくつかの潜在的な原因があります。
1.ファイルとフォルダーのアクセス許可
フォルダーの許可を0755に設定し、ファイルの許可を0644に設定します。ファイルおよびフォルダーの許可は、Akeeba Admin Toolsの無料版または有料版を使用してサイト全体でこれらの標準の安全な設定にリセットできます。
2. PHPパラメーター
[システム情報]の[PHP情報]タブにあるupload_max_filesizeパラメーターを確認してください。多くの場合、cPanelのPHP設定またはカスタムphp.ini
ファイルを使用して、共有ホスティング環境のデフォルト設定をオーバーライドできます。
3. configuration.phpの不正なパス
tmpおよびlogsフォルダーに誤ったパスが指定されている可能性があります。これらはシステム構成で指定されていますが、システムファイルを直接編集するのが快適な場合は、configuration.phpファイルで直接更新できます。パスがどうあるべきかわからない場合はwhereami.php
、次の内容のファイル(または同様のファイル)を作成してWebサイトのルートフォルダーにアップロードします。
<?php
print 'Current folder is ' . dirname(__FILE__);
?>
参照し[mywebsite].com/whereami.php
て、ルートフォルダへのパスを確認します。
正しいパスを取得したら、忘れずにwhereami.php
ファイルを削除してください。
4.不適切なPHPファイルハンドラー
WebホスティングはデフォルトのPHPファイルハンドラーを使用して構成できますが、Joomlaが安全なファイルアクセス許可を使用してファイルをアップロードおよび実行できるように、理想的にはsuPHPまたはFastCGIなどを使用する必要があります。
で使用されているPHPハンドラを確認できますSystem -> System Information -> WebServer to PHP Interface
。
PHPファイルハンドラーの相対的なメリットに関する良い記事は、http://boomshadow.net/tech/php-handlersにあります。
共有ホスティング環境では、通常、どのPHPファイルハンドラーを有効にするかを変更するアクセス権はありませんが、Webホスティング会社がこれを変更できる場合があります。
回避策として、ファイルとフォルダーのアクセス許可を0777に変更することもありますが、これによりWebサイトが脆弱な状態になり、0777のファイルアクセス許可は一般的に回避する必要があります。
Webホスティング会社がsuPHPまたはFastCGIを有効にできない場合、他の唯一のオプションは新しいWebホスティング会社を見つけることです。
5.ディスク容量
ディスク容量のクォータを超えていないことを確認してください。
トラブルシューティングチェックリスト
LinuxシステムのJoomlaで権限と所有権を設定するための推奨ベストプラクティスは何ですか?
1および4を参照してください。
WinSCPなどのプログラムを使用してファイルをサーバーに転送できない。
1、2、おそらく4、5を参照してください。
Joomla拡張機能、プラグインなどをインストールできない
1、2、3、4、5を参照してください。
危険な権限と所有権の設定が原因で安全でないファイルとフォルダー。
1および4を参照してください。
許可レベルを確認してください。ファイルとフォルダーはそれぞれ644と755でなければなりません。
いくつかの問題に直面した場合でも、多くの場合、許可レベルは問題ありません。特定のファイルとフォルダの所有権とグループを確認する必要があることを意味します。通常、グループと所有権は、Apacheのwww-dataに変更できます(ubuntuベースのWebサーバーで使用)。
ファイルのアクセス許可の確認に基づいて、この興味深いJoomlaドキュメントを自由にチェックしてください。
Shyamが説明したように、許可は644および755でなければなりません。
Joomlaでは、次の方法で、あなたが言及したすべての問題を回避できます。
WinSCPなどのプログラムを使用してファイルをサーバーに転送できない。
configuration.php
がデフォルトで許可していない(セキュリティのため)この許可を持っているなど、(444)の許可が原因で発生する可能性があります。Joomla拡張機能、プラグインなどをインストールできない
これは、temp/log
フォルダの不正なアクセス許可が原因で発生します。(755が必要です)
または別の理由は、temp/log
パスが間違っているconfiguration.php
危険な権限と所有権の設定が原因で安全でないファイルとフォルダー。
その助けを願っています..
Shyamが説明したように、許可は644および755でなければなりません。
直面している問題は、サーバーのセットアップ方法に関連している可能性が高いです。ほとんどの場合、これはApacheがFTPアカウントとは異なるユーザーで実行されている共有ホストで発生します。通常、FTPを使用してJoomlaをアップロードするため、Apacheはファイルの所有者ではないため、変更に必要な権限がありません。
Joomlaには、この問題を回避できるFTPモードがあります。Joomlaグローバル設定で有効にできます。その後、通常のApacheユーザーの代わりにFTPユーザーを使用して、すべてのファイルアクセスを行います。
ただし、より良い方法は、ホストに問題の修正を依頼することです。PHP(Apache)をセットアップして、特別なユーザー(このような場合はFTPユーザー)で実行することができます。その後、すべてが正常に動作します。
はい、Shyamの説明のとおり、許可は644および755である必要がありますでが、他の投稿者は、これがファイルがWebサーバーによって所有されており、グループが所属するグループであることを忘れています。
たとえば、FileZillaでは、次のようなアクセス許可が表示されます。
Filename Size Filetype Last Modified Permissions Owner/Group
somefile.txt 11KB txt file 2014-04-23 3:43:00 AM www-data myGroup
権限drwxr-xr-xは755です(先頭のdrを無視して、wxr-xr-xにします)。読み取りアクセス許可は4の価値があり、書き込みアクセス許可は2の価値があり、実行アクセス許可は1の価値があります。したがって、それらをすべて合計すると7になります。グループには読み取り権限と実行権限がありますが、書き込み権限はありません。したがって、グループには5があり、すべてのユーザーにも5があります。
754は、読み取り、書き込み、実行の所有者になります。読み取りと実行を行うグループ、および読み取り権限のみを持つ全員。
上記の例では、ファイルの所有者はwww-data(多くのApacheサーバーのデフォルトのWebサーバーグループ)であり、グループはグループmyGroupであり、これは私が所属するグループ(admins)です。
最初の番号は所有者の許可、2番目はグループの許可、3番目の番号は全員の許可です。明らかに、Webサーバーに必要なアクセス許可を与えるように注意する必要があります...そして、ロックダウンする必要のあるファイルがだれか(3番目の数字)だけによって書き込まれたり実行されたりしないようにしてください。数値の意味は次のとおりです。
Webサーバーがファイルを所有していると仮定すると、管理者はグループに属し、もちろん全員が3番目の番号になります。
644:644に設定されたアクセス許可を持つファイルは、すべてのユーザーが読み取り可能で、ファイル/フォルダーの所有者のみが書き込み可能です。
755:755に設定されたアクセス許可を持つファイルは、誰でも読み取りおよび実行できますが、ファイル/フォルダーの所有者のみが書き込み可能です。
777:パーミッションが777に設定されたファイルは、誰でも読み取り、書き込み、実行できます。セキュリティ上の理由から、絶対に必要な場合を除き、一時的にのみ、Webサーバーでこのアクセス許可のセットを使用しないでください。特にディレクトリにこれらの権限がある場合は、災害が発生するのを待っています。誰でもファイルをアップロードして実行できることを意味します。
Joomla!をセットアップするLinuxコマンドは次のとおりです。コマンドラインからの推奨パーミッション。推奨されるJoomlaファイルのアクセス許可
Set ownership: sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files : sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;
注-多くの人はこれらのコマンドをパスなしで表示しますが、ルートJoomla!にディレクトリを変更するのを忘れた場合は常に完全なパスを使用することをお勧めします。パスなしでインストールディレクトリを実行し、そのトップディレクトリ内のすべてのファイルとディレクトリのアクセス権を変更し、巨大な混乱を作成しました。
これらのコマンドを実行した後、より多くのアクセス許可が必要なディレクトリのアクセス許可を修正する必要があります...例えば...画像をアップロードするユーザーなど。
JOOMLAのみを使用する場合!インターフェース、およびサーバーへの管理者またはFTPアクセスを持っていない場合は、上記の所有権と権限を使用してください。
あなたが初心者ならここでやめてください。以下は、許可と所有権が何をするかを本当に理解している人だけのためです。
ただし、ほとんどの場合FileZillaとターミナルセッションコマンドラインを使用するのが好きで、手動で多くのファイルをアップロードするため、所有権とアクセス許可が非常に手に負えないと感じています。しかし、ファイルを所有しておらず、書き込み権限がないため、ファイルを上書きできません。FileZillaをWebサーバーアカウントでログインさせることもできますが、FileZillaを自分のアカウントでログインさせたいので、Webサーバーがアクセスできるファイルだけでなく、他のディレクトリも参照できます... SO ...私はこれに所有権と許可を変更します:
Filename Size Filetype Last Modified Permissions Owner/Group
somefile.txt 11KB txt file 2014-04-23 3:43:00 AM drwxr-xr-x myName www-data
自分を所有者にして、Webサーバーをグループに追加します。ディレクトリのアクセス権を775に変更し、ファイルのアクセス権を664に変更します。みんな。
あなたが私のやり方でそれをするなら、これらはコマンドです:
Set ownership: sudo chown -R myName:www-data /path/to/your/domain.com
Set Directories: sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
Set files : sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;
他の答えは、何をすべきかについての良い説明を提供します。すでにコンポーネントをアップロードしていて、ftpでファイルにアクセスできない場合にのみ、権限を修正するスクリプトを追加したいと思います。
この場合、このファイルをfix.php
FTPサーバーとしてアップロードし、ブラウザーで開きます。http://example.com/fix.php
<?php
file_fix_directory(dirname(__FILE__));
function file_fix_directory($dir, $nomask = array('.', '..')) {
if (is_dir($dir)) {
// Try to make each directory world writable.
if (@chmod($dir, 0777)) {
echo "<p>Made writable: " . $dir . "</p>";
}
}
if (is_dir($dir) && $handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $nomask) && $file[0] != '.') {
if (is_dir("$dir/$file")) {
// Recurse into subdirectories
file_fix_directory("$dir/$file", $nomask);
}
else {
$filename = "$dir/$file";
// Try to make each file world writable.
if (@chmod($filename, 0666)) {
echo "<p>Made writable: " . $filename . "</p>";
}
}
}
}
closedir($handle);
}
}
このスクリプトは、すべてのファイルのアクセス許可を666に、すべてのディレクトリのアクセス許可を777に設定します。WorldWritable は共有ホストのアクセス許可の最適なセットではありませんが、ファイルに再度アクセスでき、FTPで正しい値に設定できます。
パーティーに遅れて。ここでは、他の場所と同様に、joomlaで書き込み可能なフォルダーを決定するガイドを探しに来ました。
悪いニュースの前触れである人々をすみません。
すべてのディレクトリに755、すべてのフォルダに644のアクセス許可を使用することは、少なくとも無責任です。です。
すべてのフォルダーとファイルの所有者を書き込み可能にすることは、所有者がWebサーバーでない限り問題ありません(apacheなど)。
これは一般的に推奨される慣行であることがわかっていますが、それは良い慣行ではないことを保証できます。フォルダへの書き込み機能を付与する最後のソフトウェアは、Webサーバー自体です。まだパッチが適用されていない(または見つかっていない)エクスプロイトを利用するためにハッカーが使用するWebサーバー。
.htaccessがKevinを救うと思いますか?あなたがウェブサーバーの書き込みアクセスを許可したので忘れてください、私たちの親愛なるハッカーの友人は、彼らが望むどんなパーミッションでも彼らに彼ら自身の.htaccessファイルを作成することができます!ああ、私はUmmがサーバーによって実行可能な.jpgファイルを作成することを知りません。そして、あなたは.phpの実行に対する保護があなたのAをカバーすると思っていました。
ただし、書き込みアクセスを必要とするフォルダーのみが実際にそれを持っていることを確認してください。次のフォルダーの場合は755および644。
public_html/images
public_html/cache
public_html/tmp
そして、すべての書き込み可能なフォルダー(上記のような)に対してAllowOveride noneで.htaccessファイルをオフにしてください。
これはあなたが制御できない構成要素であるため、共有ホスティングの皆さんにとって幸運です。
.htaccessファイルを読み取り専用にすると役立つとは思わないでください。ハッカーの友人が新しいフォルダを作成できる場合(作成できる場合)、独自の.htaccessを作成できます。
神聖なものすべてのために共有ホスティングを実行している人のために、セキュリティについての手がかりを得てください。
セキュリティを理解していない場合は、ホスティング事業から抜け出してください。
さて、書き込みアクセスが必要なフォルダに関する決定的なガイドの検索に戻ります...