コンテンツ管理にK2を使用しています。ファイルをアップロードするために、/ media/k2ディレクトリとそのサブディレクトリを775に設定する必要がありました。もちろん、wwwデータグループの設定が原因で、Webサイトが破損しています。それは本当に悪い経験ですが、私に多くを教えてくれました。
私のディレクトリの所有者はzkanocaで、gorupはwww-dataでした。ファイルとディレクトリ全体を削除し、バックアップからアップロードしました。推奨されるように、ディレクトリに対してCHMOD値を755に、ファイルに対して644に設定しました。
このエラーは、ユーザーがプロフィール写真もアップロードしようとしたときに発生します。ユーザープロファイルの画像ファイル名をデータベースに追加しますが、ファイルをmedia/k2/userディレクトリにアップロードしません。
復元されたWebサイトの所有者はzkanocaおよびグループzkanocaです。
次に、管理者パネルのGlobal ConfigurationページにFTP情報を入力しました。
JoomlaのMedia Managerを使用していくつかのファイルをアップロードしようとしましたが、問題なくうまくいきました。
しかし、K2アイテムにいくつかの添付ファイルを追加しようとすると、アップロードされたと表示され、テーブルにリストされますが、実際にはアップロードされません。 k2_attachmentsテーブルに新しいレコードを挿入するだけですが、/ media/k2/attachments。サイトの前面にあるファイルリンクをクリックすると、メッセージが表示されますK2_FILE_DOES_NOT_EXIST。ただし、アップロードプロセスではエラーは発生しません。
K2を使用してアイテムに添付ファイルを追加すると、データベースにレコードが追加されますが、ファイルはアップロードされません。その後、手動でアップロードすると機能します。
もう1つの面白いことに、最初にファイルをアップロードし、それをアイテムへの添付ファイルとして追加すると、上記と同じエラーメッセージが表示されます。
FTP設定でK2アイテムにファイルをアップロードする方法を知りたい。私が見る限り、アップロードするファイルにはFTPではなくHTTPを使用しているからです。
もう1つ試しましたが、どちらも役に立ちませんでした。添付ファイルフォルダを別のフォルダに変更しました。再び、ファイルをディレクトリに書き込むことができませんでした。つまり、これはK2の手順に問題があることを意味します。
FTPインターフェースの使用を決定する前にK2をインストールした可能性はありますか?
Apacheインターフェースを使用して拡張機能をインストールすると、インストール中に作成されたすべてのファイルとディレクトリはApacheユーザーが所有します。通常、FTPユーザーには書き込み権限がありません。修正は、所有者を正しい値に変更することです。
chownは、使用できる場合はこれを修正します。それ以外の場合、最も簡単な修正は、joomlaファイルのバックアップを取り、正しい所有者で復元することです。たとえばFTPの使用。
それでも最初のステップは、media/k2フォルダーに移動し、FTPを使用してそこに書き込むことができるかどうかを確認し、フォルダーをダウンロードし、フォルダーを削除して復元することで修正できるかどうかを確認することです。 (またはchownが..)
やってみました:
ファイルadministrator/components/com_k2/lib/class.upload.phpを編集して、MIME検出メソッドをfalseに設定しました。
// these are the different MIME detection methods. if one of these methods
// doesn't work on yoursystem, you can deactivate it here; just set it to false
$this->mime_fileinfo = false; // MIME detection with Fileinfo PECL extension
$this->mime_file = false; // MIME detection with UNIX file() commaed
$this->mime_magic = false; // MIME detection with mime_magic (mime_content_type())
$this->mime_getimagesize = false; // MIME detection with getimagesize()
これで問題は解決しました