こんばんは。
私もさくらのレンタルサーバーでフォトアルバム設置が出来ず悩んでいましたが、eddy.Kさんのサイトで、解決策を見つけましたので、M.Nishimuraさんの投稿からは時間が経ってしまいましたが、今後の参考になればと思い、報告させていただきます。
https://demo-nc3.eddy-k.jp/check/photoalbum
NC3の公式サイトのトラブルにて掲載されていた「フォトアルバム投稿時のパーミッションがおかしい(?)」でこちらのデモサイトにて確認したら確かに内部エラーとなりました。
っで、ちょっと調べてみたらrenameのところで落ちているようです。
そこでググってみたらいろいろとあり見てみたらこれかなあといった解決策があったので試してみました。
良い方法とは思えないのですがこの方法で以下のフォトアルバムが設置できました。
【解決策】
/app/Plugin/Upload/Model/Behavior/UploadBehavior.php
の360行目
return rename($filename, $destination); のrenameの前に@をつけるのでした。
return @rename($filename, $destination);
とすれば、エラーを返さなくするようで現在の問題は回避できます。
もうひとつcopyし正常に複写できれば移動元を削除(unlink)するといった方法もあるようですが、コードを書く必要もあり@をつける方法を試しました。
この方法が本当に良いかは開発者さまの確認・検討が必要ですが・・・
たしかに、@をつけてみると、内部エラーが起こらずに、フォトアルバムを設置できます。設置後は、写真を追加するのは、@なしでもいけます。
検索をしてみると、次のような情報も見つかりました。ご参考までに。
http://pentan.info/php/rename_across_volumes.html
私の環境は以下の通りです
さくらのレンタルサーバー
PHP 7.2.20 (モジュール版)
MySQL 5.7
ただ、他のところで問題が出るかどうかは、Eddy.kさんがおっしゃるとおり開発者様の検討が必要ですよね。
こんにちは。
NC3.2.2の新規インストール後、フォトアルバム設置時の初回画像投稿で「決定」押下後、「内部エラー」となり失敗します。
調べたところ、以下のようなことが分かりました。
- /www/app/Uploads/files/upload_file/real_file_name/x/x 内に入った画像ファイルのパーミッションが600.
- キャビネットで同一画像をアップロードすると、同ディレクトリ内の画像ファイルのパーミッションが644.
フォトアルバムの仕様(?)かよくわからないのですが、何か参考になる情報をお持ちの方がいれば、教えていただけないでしょうか。
以下は補足事項です。
- さくらのレンタルサーバ
- PHP 7.3.4(php.iniに「extension = imagick.so」を設定)
- MySQL 5.7
- もう一環境同じものがあるが、そちらはこの問題は起きていないのが解せない(違い:PHP7.2)
エラーログを添付しようとしたのですが、うまくいかなかったので貼り付けます(長くなってすみません)。
2019-04-30 05:58:58 Error: Model UploadFile, Field real_file_name: Unable to move the uploaded file to files/upload_file/real_file_name/7/12/xxxxxxxxxx.png
2019-04-30 05:58:58 Error: [UploadException] Unable to upload file
Request URL: /photo_albums/photo_albums/add/6?frame_id=10
Stack Trace:
#0 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Utility/ObjectCollection.php(129): UploadBehavior->afterSave(Object(UploadFile), true, Array)
#1 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Event/CakeEventManager.php(243): ObjectCollection->trigger('afterSave')
#2 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Model/Model.php(1970): CakeEventManager->dispatch(Object(CakeEvent))
#3 /home/xxxxxxxxxx/www/app/Plugin/NetCommons/Model/NetCommonsAppModel.php(427): Model->_doSave(Array, Array)
#4 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Model/Model.php(1760): NetCommonsAppModel->_doSave(Array, Array)
#5 /home/xxxxxxxxxx/www/app/Plugin/Files/Model/Behavior/AttachmentBehavior.php(209): Model->save(Array)
#6 /home/xxxxxxxxxx/www/app/Plugin/Files/Model/Behavior/AttachmentBehavior.php(175): AttachmentBehavior->afterSaveByAttachment(Object(PhotoAlbum), true, Array)
#7 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Utility/ObjectCollection.php(129): AttachmentBehavior->afterSave(Object(PhotoAlbum), true, Array)
#8 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Event/CakeEventManager.php(243): ObjectCollection->trigger('afterSave')
#9 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Model/Model.php(1970): CakeEventManager->dispatch(Object(CakeEvent))
#10 /home/xxxxxxxxxx/www/app/Plugin/NetCommons/Model/NetCommonsAppModel.php(427): Model->_doSave(NULL, Array)
#11 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Model/Model.php(1760): NetCommonsAppModel->_doSave(NULL, Array)
#12 /home/xxxxxxxxxx/www/app/Plugin/PhotoAlbums/Model/PhotoAlbum.php(233): Model->save(NULL, false)
#13 /home/xxxxxxxxxx/www/app/Plugin/PhotoAlbums/Controller/PhotoAlbumsController.php(221): PhotoAlbum->saveAlbumForAdd(Array)
#14 [internal function]: PhotoAlbumsController->add()
#15 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Controller/Controller.php(499): ReflectionMethod->invokeArgs(Object(PhotoAlbumsController), Array)
#16 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Routing/Dispatcher.php(193): Controller->invokeAction(Object(CakeRequest))
#17 /home/xxxxxxxxxx/www/vendors/cakephp/cakephp/lib/Cake/Routing/Dispatcher.php(167): Dispatcher->_invoke(Object(PhotoAlbumsController), Object(CakeRequest))
#18 /home/xxxxxxxxxx/www/app/webroot/index.php(120): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#19 {main}