質問: パーフェクトphp(技術評論社)のフレームワークでjqueryを使いたいと考えています。 制約としては、 ・googleなどのhosted libraryは利用できません。 ・Webアプリの一部のページでjqueryを使用します。 ・将来に備え、どのページにもjqueryライブラリーを読み込んで置く必要があります。 そこで私は次のようにしました。 1:ドキュメントルートの直下にlibというディクレトリを作って、その中にjqueryライブラリーをアップしました。 ライブラリーファイル名は、jquery-3.4.1.min.js です。 2:view直下のlayout.phpのhead内に、 と記述しました。 しかし、結果は jquery-3.4.1.min.js が404 not found となりました。 自分としては、 layout.phpからみて、親の兄弟ディレクトリに下にjqueryライブラリーがあるので、 パスは間違っていないと、考えています。 このフレームワークでjqueryを使いたい場合、どのようにしたら良いのでしょうか。 実際にjqueryをこのフレームワークで利用されておられる方のアイデアがあれば、お知らせいただければ幸いです。 hosted librayにせざるを得ないのであれば、そうしたご回答でも結構です。 また、できれば、ドキュメントルート内におけると管理上、都合が良いのですが、ドキュメントルートの外においたという方法も歓迎です。 その場合、その方法をとった理由があれば、お知らせいただければ助かります。
回答: クライアントに読ませるjsなどのファイルは、あくまでURLで認識できるパスである必要があります。 相対パスであれば、実行しているURLからの相対 ですね。 なので、置場所もブラウザから参照できる場所である必要があります。 `__DIR__`だと、サーバー上のそのファイルがあるフォルダまでの絶対パスとなりますので、ブラウザからアクセスできるパスにはなり得ません。 ブラウザの「ソースを表示」にて生成されたパスを確認してみてください(ちなみにセキュリティリスクも加味すると基本的にはデバッグ以外で`__DIR__`を画面出力してはいけません。) ちなみに多くのフレームワークではパスを気にしなくていいように ルートパスなどを取得する関数が整備されています。 サーバー上から見たパスとブラウザから見たパスでは違いますしね。 パーフェクトPHPは確かにボリュームも内容も良いとは思いますがPHP7には対応していませんし、 古くなってきているのは間違いないので、PHP7対応の書籍を購入してください。 ※必ずPHPマニュアルは仕様確認で利用してくださいね