ページ 11

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月21日(金) 17:05
by min-o
MODXバージョン 1.0.23J
PHP Version 7.2.24
データベースのバージョン 5.5.5-10.4.17-MariaDB-log
サーバー ASP
MaxiGallery 0.5.2

お久しぶりです。
長いこと運営しているサイトで、ずっとmaxigalleryのslimboxを使っていましたが、
レスポンシブ対応のデザイン変更で、maxigallery部分をSwiperで動かすように修正しました。

maxigalleryスニペットコールを2つおいて、上はメインの画像、下はサムネ画像を出力、
画像アップアップロード用のmanage部分は上のメインのみ出力としました。
[!MaxiGallery? &galleryPictureTpl=`mg-swiper-GalleryPicture2` &galleryOuterTpl=`mg-swiper-GalleryOuter2` &max_thumb_size=`72` &max_pic_size=`800` &css=`***/maxigallery2.css`!]

[!MaxiGallery? &manageOuterTpl=`mgNoTpl` &galleryPictureTpl=`mg-swiper-GalleryPicture2_th` &galleryOuterTpl=`mg-swiper-GalleryOuter2_th` &max_thumb_size=`72` &max_pic_size=`800` &css=`***/maxigallery2.css`!]
Swiperはうまく行ったのですが、maxigalleryで画像をアップロード時に以下のエラーが出ます。
エラーがでてもアップロード自体は成功しています。

chmod(): No such file or directory を検索したらキャッシュ周りの問題とあったので、スニペットコールを
[[MaxiGallery?〜〜にしてみましたが同じエラーでした。
サムネ用の下のスニペットコールを削除して、スニペットコール1つだけならエラーも出ないのですが。
エラーをでなくする方法ないでしょうか?

よろしくおねがいします。
Snippet - MaxiGallery - イベントログ
エラー
イベントID 33
ソース Snippet - MaxiGallery
日付 2023/04/21 16:18:23
« MODX Parse Error »
MODX encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error : chmod(): No such file or directory
ErrorType[num] : WARNING[2]
File : /home/*****/html/assets/snippets/maxigallery/maxigallery.php
Line : 372
Source : chmod($mg->path_to_gal.$name,0666);
LastQuery : DESC *****_modx02.modx_maxigallery
Basic info
REQUEST_URI : /products/hogehoge.html
Resource : [13696]ページタイトル
Current Snippet : MaxiGallery
Referer : https://*****/products/hogehoge.html
User Agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:109.0) Gecko/20100101 Firefox/112.0
IP : 118.238.216.167
Benchmarks
MySQL : 0.0218 s (112 Requests)
PHP : 0.0521 s
Total : 0.0739 s
Memory : 6.98 MB

Backtrace
1 $modx->executeParser()
index.php on line 134
2 $modx->prepareResponse()
manager/includes/document.parser.class.inc.php on line 295
3 $modx->parseDocumentSource()
manager/includes/document.parser.class.inc.php on line 581
4 $modx->invokeEvent()
manager/includes/document.parser.class.inc.php on line 3063
5 $modx->evalPlugin()
manager/includes/document.parser.class.inc.php on line 4212
6 eval()
manager/includes/document.parser.class.inc.php on line 2430
7 PHxParser->OnParseDocument()
manager/includes/document.parser.class.inc.php(2430) : eval()'d code on line 23
8 PHxParser->Parse()
/home/*****/html/assets/plugins/phx/phx.parser.class.inc.php on line 46
9 PHxParser->ParseValues()
/home/*****/html/assets/plugins/phx/phx.parser.class.inc.php on line 61
10 $modx->evalSnippets()
/home/*****/html/assets/plugins/phx/phx.parser.class.inc.php on line 111
11 $modx->_get_snip_result()
manager/includes/document.parser.class.inc.php on line 2577
12 $modx->evalSnippet()
manager/includes/document.parser.class.inc.php on line 2639
13 eval()
manager/includes/document.parser.class.inc.php on line 2500
14 include()
manager/includes/document.parser.class.inc.php(2500) : eval()'d code on line 75
15 chmod()
assets/snippets/maxigallery/maxigallery.php on line 372

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月25日(火) 22:44
by yama
$mg->path_to_gal.$name
この値が分かるとよいのですが、、

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月26日(水) 10:07
by min-o
返信ありがとうございます。

$mg->path_to_gal.$name
これはどこを見ればよいでしょうか?

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月26日(水) 20:36
by yama
chmod($mg->path_to_gal.$name,0666);
こう書かれている行を探して、
直前の行に
exit($mg->path_to_gal.$name);
こう書くと表示されると思います

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月28日(金) 10:19
by min-o
maxigallery.php の該当行に
exit($mg->path_to_gal.$name);
加え、画像アップロードしたら以下が表示されました。
assets/galleries/16942/4582429453453.jpg
16942はリソースID
後ろは画像ファイル名です。
画像自体はアップロードされてません。

参考になりますでしょうか?

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月28日(金) 12:18
by yama
exit($mg->path_to_gal.$name);
このデバッグコードを書かなければ、たぶんアップロードできるんですね?

assets/galleries/16942/4582429453453.jpg
このように表示されているということは、この部分の処理には問題なさそうですね。
ここより前の部分でおかしくなっているみたいです。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年4月28日(金) 17:19
by min-o
はい。デバッグコードなしだとエラーは出ますがアップロードはできてます。

エラー画面からブラウザのバックで戻って、
Manage picturesからmaxigalleryの管理画面に入るとアップロードした画像があります。
Deleteや変更も問題ないです。
アップロード時のみ、エラーがでます。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月12日(金) 11:49
by tktools
木下です。

コード: 全て選択

exit($mg->path_to_gal.$name);

コード: 全て選択

exit(getcwd() . $mg->path_to_gal . $name);
若しくは

コード: 全て選択

echo getcwd() . "\n"; 
exit($mg->path_to_gal . $name);
として、本当に対象となっているファイル名が存在している場所を示しているか確認してみては如何でしょう。
もしかしたら起点となるディレクトリが違っていて $mg->path_to_gal . $name では正しくアクセス出来ないのかもしれません。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月12日(金) 12:49
by min-o
木下さん
返信ありがとうございます。
exit(getcwd() . $mg->path_to_gal . $name);
でやってみたところ
/home/hogehoge/www/test.hogehoge.co.jp/htmlassets/galleries/13696/4582429453453m.jpg
とでました。画像の場所は
〜〜/html/assets/galleries/リソースID/ファイル名.jpg
なので htmとassets の間 / が抜けてます。

exit(getcwd() . $mg->path_to_gal . $name); 
をはずすとエラーは出ますが、画像は以下のディレクトリにアップされます。
/www/test.hogehogeco.jp/html/assets/galleries/13696/4582429453453m.jpg

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月12日(金) 15:36
by tktools
木下です。

あ、
getcwd() . $mg->path_to_gal . $name
だと確かに  / が抜けますね。

コード: 全て選択

exit(getcwd() ."/" . $mg->path_to_gal . $name);
とするのが正解だったかも。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月12日(金) 15:49
by tktools
木下です。

実際は

コード: 全て選択

/www/test.hogehogeco.jp/html/assets/galleries/13696/4582429453453m.jpg
にあるのに

コード: 全て選択

/home/hogehoge/www/test.hogehoge.co.jp/html/assets/galleries/13696/4582429453453m.jpg
にあるファイルのモードを変更しようとしてファイルが存在しないというエラーになっているのなら

コード: 全て選択

chmod("/www/test.hogehogeco.jp/html/" . $mg->path_to_gal.$name,0666);
とすればエラー無くファイルがアップロードできるかもしれません。
対処療法かもしれませんが。

maxigalleryを2つ設置した時だけエラーになるのは
maxigalleryの内部で起点となるディレクトリを変更している箇所があるのかもしれません。

実際にコードを見ていないので「かもしれません」ばかりで申し訳ありません。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月12日(金) 17:43
by min-o
木下さん
返信ありがとうございます
exit(getcwd() ."/" . $mg->path_to_gal . $name);
にしたら / 付きで出力されました。
chmod("/www/test.hogehoge.co.jp/html/" . $mg->path_to_gal.$name,0666);
こちらの決め打ちでやってみたのですが
Error : chmod(): No such file or directory
ErrorType[num] : WARNING[2]
File : /home/hogehoge/www/test.hogehoge.co.jp/html/assets/snippets/maxigallery/maxigallery.php
Line : 375
Source : chmod("/www/test.hogehoge.co.jp/html/" . $mg->path_to_gal.$name,0666);
LastQuery : DESC hogehoge_modx02.modx_maxigallery
とエラー変わらずでした。

$mg->path_to_gal.$name は assets/galleries/リソースID/ファイル名.jpg でその場所にアップロードされてるんですが…

ただ場所のパス決め打ちだとアップした画像のサムネ画像が作成されず、パーミッションは644
maxigalleryの manage画面にも表示されませんでした。

もとのmaxigallery.php chmod($mg->path_to_gal.$name,0666);
だとエラーは出ますが、画像はアップロードされパーミッションは666、サムネ作成されます。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月14日(日) 22:50
by yama
https://github.com/extras-evolution/MaxiGallery
使ってるのってこれと違うバージョンでしょうか?
行番号が違うみたいなので。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 08:53
by tktools
木下です。

サーバーの環境が php-fpm で chroot を行っている環境の様でちょっと特殊かもしれません。
もとのmaxigallery.php chmod($mg->path_to_gal.$name,0666);
だとエラーは出ますが、画像はアップロードされパーミッションは666、サムネ作成されます。
本来はエラーが出ない様にする方が良いのですが、chroot の環境での chmod の動きが何か不整合があるようなので
エラーメッセージが出る以外には動作は正常なのであれば

コード: 全て選択

@chmod($mg->path_to_gal.$name,0666);
としてエラーを抑制してしまうのも一つの方法かと思います。

@を多用するとエラーが出ていても無理やり進めることになってデバッグが複雑になるので使わないで済む方が良いのですが…

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 12:09
by min-o
yamaさん

使っている maxigalleryスニペット 添付します
PHP7.2にしたときにエラーがでて、ASPさんに一部修正してもらいました。
修正点は次のとおりです。
define(MAXIGALLERY_PATH, "assets/snippets/maxigallery/");

define('MAXIGALLERY_PATH', "assets/snippets/maxigallery/");
他の修正ファイル
maxigallery/maxigallery.class.inc.php
maxigallery/chunkie/chunkie.class.inc.php
maxigallery/chunkie/phx.parser.class.inc.php

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 12:21
by min-o
解決策として
&galleryOuterTpl の中にサムネ部分も入れてしまい、maxigalleryを1つにしてみたところ
エラーは出なくなりました。

galleryOuterTpl
<div class="swiper-container slider">
<div class="swiper-wrapper">
[+maxigallery.pictures+]
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<div class="swiper-pagination"></div>
</div>
<center>[+maxigallery.managebutton+]</center>

<div class="swiper-container slider-thumbnail">
<div class="swiper-wrapper">
[+maxigallery.pictures+]
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
ただこれだと
[+maxigallery.pictures+] をメイン画像とサムネで使いまわすため、サムネにもメイン画像を表示してCSSで縮小表示になりますが…。

maxigalleryはサムネ用のプレースホルダがなくて、画像も
tn_[+maxigallery.picture.filename+] なのが厄介です。

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 13:23
by yama
https://github.com/extras-evolution/Max ... nippet.tpl
上記を見てると1行目から怪しい気がします

> $path_to_galleries=$modx->config['rb_base_url'] . 'galleries/'; // [ path ]

上記は

> $path_to_galleries=MODX_BASE_PATH . 'galleries/'; // [ path ]

こうしないとサーバ内の物理パスを正しく参照できないと思います。
にも関わらず動作しているみたいなのでどこかで帳尻を合わせてるのかもしれませんが、
相当に複雑な作りになっているので、調べるのは難しいかも・・

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 13:24
by yama
$modx->config['rb_base_url']でもいいのかも?こういう名前だけど、もしかすると物理パスを返していた気もするので

maxigalleryをページに2つ置くと画像アップロード時にエラーが出る

Posted: 2023年5月15日(月) 14:25
by min-o
使ってるMaxiGallery 0.5.2 でした
こうなってます。
// Path where the galleries will be stored (you have to create it and make it writeable!)
$path_to_galleries="assets/galleries/"; // [ path ]
//
// Path where MaxiGallery is installed
define('MAXIGALLERY_PATH', "assets/snippets/maxigallery/");
//
//include snippet file
$output = "";
include($modx->config['base_path'].MAXIGALLERY_PATH.'maxigallery.php');
//
たしか0.6にしたら動かなかったか、エラーになって戻したような覚えがあります。