Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@kobakaku
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A

composerが正常に動きません。

解決したいこと

composerが正常に動きません。(´;ω;`)
index.phpをlocalで動かそうとすると
HTTP500EROORが出ます
また、MAMP/logs/php_errorsを
下記に添付します。

発生している問題・エラー

 PHP Fatal error:  Uncaught Error: Class 'App\Controllers\TestController' not found in C:\MAMP\htdocs\php_test\composertest\index.php:7
Stack trace:
#0 {main}
  thrown in C:\MAMP\htdocs\php_test\composertest\index.php on line 7```


該当するソースコード

<?php

require_once  __DIR__ . '/vendor/autoload.php';

use App\Controllers\TestControllers;

$app = new TestController;
$app->run();

いろいろググってみたけどどうにもなりません。
勉強が何にも進まないのでだれかこのエラーがわかる優秀な方教えていただけると幸いです。

0
4
Answer
Report this answer
require_once  __DIR__ . '/vender/autoload.php';

vender ではなく vendor です。

0
有難うございます。
ですが直したけどまた別のエラーが出てしまいました。
また、ご教授頂ないでしょうか??

composer diagnose をしてみたら
Checking composer.json: WARNING
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
とでました、、(;´д`)トホホ

0
Report this answer

文章をそのままググれば対処法が出てきますが…… composer.json に license フィールドがない警告です。 composer.json に "license": "proprietary" と追記すれば消えます。

0
解答有難うございます。ついさっき追記してそのエラーは消すことができたのですが
肝心のHTTP500EROORが消えません。
> use App\Controllers\TestControllers;

TestControllers ではなく TestController です。
use でエラーが出ていないということは app/Controllers/TestControllers.php が存在するのかもしれませんが、そうなら app/Controllers/TestController.php にリネームしてください。
解答有難うございます。
リネームしましたが全く同じ内容のエラーが出てしまいます、、
なんでなのでしょうか、、、、
ついでに説明すると、 HTTP 500 は PHP のコードに何かエラーがあることを示すステータス番号でしかないので、そこに注目しても何も分かりません。重要なのは PHP のエラーメッセージの

Uncaught Error: Class 'App\Controllers\TestController' not found ... thrown in /.../index.php on line 7

です。 index.php の7行目で、 App\Controllers\TestController クラスが見つからないというエラーが出ているということです。そこを手がかりにすれば調査を進められるはずです。
(↑コメントが入れ違いになりました)

同じエラーなら App\Controllers\TestController クラスが見つからないということですね。 app/Controllers/TestController.php で TestController クラスを定義しているか、 namespace とクラス名は合っているか確認してください。
ご回答ありがとうございます。
確認したところコードの間違いは見つかりませんでした。(´;ω;`)
なんででしょう、、、
MAMP の設定画面でサーバを停止して再起動してみてください。 localhost のポート番号が間違っていないかも確認してください。
ModelsフォルダのTestModels.php
<?php

namespace App\Models;

class TestModel
{
private $text = 'hello world';

public function getHello() {
return $this->text;
}
}
ControllersフォルダのTestControllers.php
<?php

namespace App\Controllers;

use App\Models\TestModel;

class TestController
{
public function run() {
$model = new TestModel;
echo $model->getHello();
}
}
composer.json
{
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
> TestModels.php
> TestControllers.php

ファイル名とクラス名が一致しないとエラーの原因になります。 TestModel.php, TestController.php にしてください。
hello world がでました!!!
本当に感謝しています!!

有難うございました!
おめでとうございます!
View the remaining 13 comments.

use App\Controllers\TestControllers; <--s

一つsが多く無いですか?

0
解答有難うございます。多かったです、、
現在無事うごきました!!
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login