web-dev-qa-db-ja.com

書き込み不可としてリストされているすべてのディレクトリ

前のタイトル:拡張機能をインストールできません:エラー:アーカイブが存在しません

CentOS 6.5サーバーからJoomla 3.3.6を削除して再インストールしました。いくつかのバックアップユーティリティとCCKをインストールしたかった。ただし、次のようなエラーが発生して拡張機能をインストールしようとしています。

Error
Archive does not exist

Warning
JFolder: :files: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JFolder: :folder: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JFolder: :files: Path is not a folder. Path: /var/www/html/jrt/install_54b9d8947a105
JInstaller: :Install: Cannot find Joomla XML setup file

これは許可エラーを叫びますが、これはjrt(tmp)フォルダーに対する許可です

drwxr-xr-x.  2 root root  4096 Jan 16 22:32 jrt

これに対する提案のほとんどは、それを777に設定することですが、それは悪い習慣であり、とにかく機能しないと考える必要があります。 NTFSアクセス許可に慣れていて、このフォルダーの子にアクセス許可を設定する必要があると思いますが、内容が空なので変更するものはありませんか?

この悲しい話をウェブで何度か見たことがあります。フォルダーを削除したかのようにパスが存在することがわかっているので、エラーも発生します

JFolder: :folder: Path is not a folder. Path: /var/www/html/jrt

これをテストすることが他にあるかどうかはわかりませんが、PHPハンドラも研究で登場しました。私が更新したのでPHPこれを実行できるようにJoomlaのバージョンはおそらく原因でもあります。テストするために小さなphpファイルを作成しました

<?php
   print "hello world";
?>

実際に表示した「hello world」が表示されるかどうかを確認します。

PHP ini

回答から、PHP.ini設定に変更するように求められました。これがデフォルトから変更したものです。ここで変更を加えても、エラーは修正されません。

upload_max_filesize = 10M
post_max_size = 11M
max_input_time = 300
max_execution_time = 120
default_socket_timeout = 120

権限

管理コンソールの[システム]> [システム情報]> [ディレクトリのアクセス権]の正しい部分を確認した後、ここに1つのエントリも書き込み可能としてリストされていません。各フォルダツリーを編集する必要がありますか?繰り返しますが、これらのフォルダーに777を設定することは良い考えではありません(または機能します)。たとえば、一時フォルダーが書き込み不可としてリストされていますが、上記の正しい権限のように見えます。

また、htmlルートフォルダーのグループオーナーを変更して、すべてのフォルダーとファイルにグループとしてApacheが含まれるようにしました。これまでのところ変化はありません。

Apacheエラー

拡張機能をインストールしようとすると、これが表示されます

[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  file_put_contents(/var/www/html/jrt/plg_webinstaller_3.2v1.0.5.Zip): failed to open stream: Permission denied in /var/www/html/libraries/joomla/filesystem/file.php on line 431, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  array_merge(): Argument #1 is not an array in /var/www/html/libraries/cms/installer/helper.php on line 154, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 19:24:02 2015] [error] [client 123.123.123.123] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/libraries/cms/installer/helper.php on line 207, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  file_put_contents(/var/www/html/jrt/plg_webinstaller_3.2v1.0.5.Zip): failed to open stream: Permission denied in /var/www/html/libraries/joomla/filesystem/file.php on line 431, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  array_merge(): Argument #1 is not an array in /var/www/html/libraries/cms/installer/helper.php on line 154, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
[Sat Jan 17 20:39:06 2015] [error] [client 123.123.123.123] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/libraries/cms/installer/helper.php on line 207, referer: http://mywebsite.ca/administrator/index.php?option=com_installer
4
Matt

writeパスに私を連れて行った彼のトラブルシューティングのために@VilleNiemiに大声で叫びます。 (はい、私は駄洒落ではなく、代わりに書き込みを使用しました。)ディレクトリのアクセス許可が問題の原因のようです。

Unwritable

ホストが専任である場合の解決策

グループをrootからApacheに変更すると問題が解決するが、何も変更されないと考えました。 Joomla Forum に関する別の投稿を読んだ後、誰かがフォルダーとファイルの所有者を変更するのを見ました。だから私は以下を実行した後

Sudo chown -R Apache:apache /var/www/html/

次に、画面をリフレッシュすると、緑色が再び表示されます。

Green is good

したがって、私のWebディレクトリのルートにあるファイルは、アクセス権が744に設定されています。755のフォルダと、そのフォルダ内のファイルは644です。今のところ、私はすべて準備ができていると思います。

サイトに最初のプラグインを正常にインストールしました。私と一緒にレースに出かけましょう!

共有ホストの場合の解決策。

完成したらもっと詳細なものを投稿しますが、この回答にリンクされている Dionysopoulos から適切に読み取れます 4 。それは許可の落とし穴について、そしてなぜ私の専用ホストソリューションが一般的に悪いのか、そして特に共有ホストプロバイダーにとって悪いのかについて話します。

4
Matt

「アーカイブが存在しない」というのは、Joomla!アーカイブのアップロードに失敗しました。これにより、アーカイブの解凍に失敗し、コンテンツが予期したフォルダーに移動されません。これは、予期されたフォルダが存在しないことを意味します。

PHPに問題のファイルに対して低すぎるアップロード制限があるか、tmpパスが正しくありません。自分でPHPをインストールした場合、関連する設定おそらくデフォルトは2MBで小さすぎるphp.iniで、upload_max_filesizeとpost_max_sizeをより高い値に設定します。

その間、インストールまたは更新の途中でタイムアウトすると非常に煩わしい問題が発生するため、max_execution_timeも増やします。

2
Ville Niemi