PDFviewerのエラーについて

2019年3月1日 at 18:05

題名の通りですが、無事にインストールしブロックも追加できたんですが、PDFファイルを設定して幅も設定して新規ボタンを押すと次のようなエラーが出ます。

Use of undefined constant external_url - assumed 'external_url' (this will throw an Error in a future version of PHP)

ネットで見ると ’ が無いなどの初歩的なエラーと出てますがブロック上でそこを設定する項目も見当たりませんし解決できません。

お手数おかけしますがよろしくお願いします。

タグ:

Re: PDFviewerのエラーについて

2019年3月5日 at 9:51
できれば、質問の際には環境情報をお知らせください。

一応、私のほうのテスト環境
concrete5:8.3.2
PHP:7.1.18
の環境でアドオンのPDFViewerをインストールし、
そのブロックを配置、PDFを表示してみたところ、
特に問題なく表示させることができました。
(エラーログにも、特に何も表示されていません)

たぶん、swicaさんの環境は上記の環境とは異なると思いますので、
環境情報をお知らせいただくと、
エラーになる要因に一歩近づけるかと思います。
 

Re: PDFviewerのエラーについて

2019年3月5日 at 19:53
失礼しました。
以下、環境情報です。

# concrete5 Version
Core Version - 8.4.3
Version Installed - 8.4.3
Database Version - 20180716000000

# concrete5 Packages
Genesis Theme (1.1.9), Neat (0.9.2), PDF Viewer (1.0.1), Static Site Exporter (1.0)

# concrete5 Overrides
None

# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache/2.4.33 (Win32) OpenSSL/1.1.0h PHP/7.2.7

# Server API
apache2handler

# PHP Version
7.2.7

# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, readline, Reflection, session, SimpleXML, SPL, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 20M
upload_max_filesize - 2M
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - <i>no value</i>
session.gc_maxlifetime - 7200

お手数かけますがよろしくお願いします。
 

Re: PDFviewerのエラーについて

2019年3月6日 at 10:20
私がテストした環境とPHPのバージョンが異なるので、
たぶん、PHP7.2からWarningに格上げされたことによるものかなと推測しました。


根本的な解決にはなりませんが、
利用しているサーバがレンタルサーバなどで、phpのバージョンを変更できるようであれば、
phpを7.0とか7.1などにすると、エラーは表示されなくなるかと思います。


実質的な解決は、まずはアドオンの作者に不具合について報告するのが良いと思うのですが、
いかんせん私もその手順などを知りません(これまでアドオン等を利用したことがないので・・・)。


ここからは私なりに想定されるエラーの箇所を内容に沿って、PDFviewerの中身を調べてみた話です。

簡単ではありますが、ソースコードを修正することになりますので、
やるかやらないかはご自身の責任の範疇でお願いします。

/packages/pdf_viewer/blocks/pdf_viewer/controller.phpの44行目に

if($args[external_url] && $args["pdf_file"]){

という箇所があり、この$args[external_url]のexternal_urlが
クォテーションで囲われていないのが該当の部分なのかなと見込みました。

(1)何も修正せずにPHPのバージョンを7.1から7.2.6に変更してテストしてみた結果、エラーが発生。

(2)if($args[external_url] && $args["pdf_file"]){ ⇒ if($args["external_url"] && $args["pdf_file"]){
該当箇所をダブルクォテーションで囲み、再テストしてみたところ、エラーは発生せず。

となりました。(たぶん、これでOK?かな)

今後、このアドオンを同様の環境で利用する方も多くいるかもしれないので、
上記メモ書きしました。
 

Re: PDFviewerのエラーについて

2019年3月11日 at 7:48
返信遅くなりすみません。
丁寧な解説ありがとうございました。
おかげでPHP初心者の私でも書き換えてエラーを解決できました。

ありがとうございます。