🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

2回答

1873閲覧

Docker環境下のLaravelでvendor下ファイルをrequireができない

ryoooooooooooo

総合スコア4

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2021/01/23 09:44

前提・実現したいこと

Docker環境下のlaravelでphpQueryを使用するために、composerからphpQueryをインストールして、autoload機能を使用しControllerから呼び出したい。

発生している問題・エラーメッセージ

●初回、試したこと1、2のエラー Symfony\Component\Debug\Exception\FatalErrorException main(): Failed opening required 'vendor/autoload.php' (include_path='.:/usr/local/lib/php') ●試したこと3、4のエラー Fatal error: Uncaught Error: Class 'vendor\autoload\ComposerAutoloaderInit6a5e7bdea42e3bc9a9faa7ba76ac283e' not found in /work/backend/vendor/autoload.php:9 Stack trace: #0 /work/backend/public/index.php(24): require() #1 {main} thrown in /work/backend/vendor/autoload.php on line 9 ●試したこと5のエラー Symfony\Component\Debug\Exception\FatalErrorException main(): Failed opening required '/vendor/autoload.php' (include_path='.:/usr/local/lib/php')

該当のソースコード

●Controller.php <?php namespace App\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; require_once 'vendor/autoload.php'; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; function testQuery(){ echo "hello from controller"; $html_dom = phpQuery::newDocument("https://brainlog.jp/programming/php/post-437/#outline__2_1"); $scraped_str = $html_dom["title"]->text(); echo( $scraped_str ); } } ●autoload.php <?php // autoload.php @generated by Composer // namespace vendor\autoload; require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInit6a5e7bdea42e3bc9a9faa7ba76ac283e::getLoader();

試したこと

1、composer再インストール
2、composer update --no-scriptsの実行
3、authload.phpにnamespaseをつけてみる
4、3の状態でuseを使って呼び出してみる
5、autoload.phpのreturn ComposerAutoloaderInit6a5e7bdea42e3bc9a9faa7ba76ac283e::getLoader();を、autoload_real.phpのクラス名に書き換え

補足情報(FW/ツールのバージョンなど)

Laravel Framework 6.20.14
Composer version 2.0.8
Docker version 20.10.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kai0310

2021/01/24 14:33

念の為`composer dump-autoload` を行ってください
ryoooooooooooo

2021/01/25 06:53

ご回答ありがとうございます。 この投稿をした後なのですが、`composer dump-autoload`を実行しました、結果は変わりませんでした。
guest

回答2

0

autoload機能を使用しControllerから呼び出したい。

Laravelがやってくれるから自前で書き直す必要はない

投稿2021/01/23 09:54

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryoooooooooooo

2021/01/23 10:17

回答ありがとうございます。 それは試したこと5のautoload.phpを書き直す必要がないということですか? それともrequireやuse、namespaceを書く必要がないということですか? ちなみにcontrollerにrequireやuseを書かないと、以下のエラーが発生します。 Class 'App\Http\Controllers\phpQuery' not found
mikkame

2021/01/23 10:18

autoload.php 書き直す必要ありません。 use だけ該当Controllerにかいてください
ryoooooooooooo

2021/01/23 13:28

その際のuseのpathはなんと記述すれば良いのでしょうか? use vendor\autoload; と入力すると、 Class 'App\Http\Controllers\phpQuery' not found というエラーが発生します。
mikkame

2021/01/24 07:24

use PhpQuery\PhpQuery です https://github.com/elboza/PhpQuery 公式サイトに書いてありますよ。まずはそこを読みましょう。 また、namespace/composer/autoloadへの理解が不足しているので真面目にプログラマーになりたければ勉強しましょう
ryoooooooooooo

2021/01/24 12:01

ご指摘ごもっともです、勉強不足での質問申し訳ありません。 use PhpQuery\PhpQuery;を記載したのですが、やはりclass not found になってしまいます。 composer.jsonやautoload系のファイルに何か記載が必要なのでしょうか?
mikkame

2021/01/24 12:15

> use PhpQuery\PhpQuery;を記載したのですが、やはりclass not found になってしまいます。 エラーをコピペしてください
ryoooooooooooo

2021/01/24 14:23

●画面に表示されるエラー Symfony\Component\Debug\Exception\FatalThrowableError Class 'PhpQuery\PhpQuery' not found ●laravelのログのエラー local.ERROR: Class 'PhpQuery\PhpQuery' not found {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Class 'PhpQuery\PhpQuery' not found at /work/backend/app/Http/Controllers/Controller.php:26) ●ついでにこれがControllerです <?php namespace App\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; // use Detection\MobileDetect as MobileDetect; require_once '/work/backend/vendor/autoload.php'; // require_once '/vendor/autoload.php'; // require_once '/electrolinux/phpquery/phpQuery/phpQuery.php'; // use backend\Vendor\Autoload; // use Autoload\Autoload; use PhpQuery\PhpQuery; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; function testQuery(){ echo "hello from controller"; $html_dom = PhpQuery::newDocument("https://brainlog.jp/programming/php/post-437/#outline__2_1"); $scraped_str = $html_dom["title"]->text(); echo( $scraped_str ); return view('index'); } }
guest

0

自己解決

requireをルートディレクトリから記述、
use phpQuery;と記述すると解決、次のエラーへ進むことができました。
composerでインストールした際の指定方法、もしくはlaravelで呼び出しているからなのかよくわかりませんが、公式に書いているのと少し違いました。
お手伝いしてくださった方々ありがとうございました!

投稿2021/01/25 07:47

ryoooooooooooo

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問