[Lumen / MySQL] Database connectie geeft 500 error

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Hoi,

Ik ben bezig met mijn eerste stapjes in Lumen, ik heb deze tutorial gevolgd, die leek me wel lekker recht-door-zee. Probleem is alleen dat alle ajax-calls een 500 error krijgen. Ik heb een beetje zitten debuggen in de controller, en het lijkt erop dat het misgaat zodra Lumen iets doet met de database.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
namespace App\Http\Controllers;

use Laravel\Lumen\Routing\Controller as Controller;
use App\User; //loads the User model

class UserController extends Controller{

    public function index(){ //Get all records from users table
        return array();
        return User::all();
    }
/*


Als ik regel 10 uitcomment dan geeft ie een 500 error, dus het probleem zit em in die User.

En nou zit ik vast. Ik heb nog geprobeerd in de errorlogs te kijken, maar ik weet niet precies waar ik dan moet zijn.
  • In storage/logs staat geen enkel bestand
  • nginx toont niks vreemds
  • php toont niks vreemds
  • mysql toont niks vreemds
Iemand een idee hoe ik dit op kan lossen? Heb de server ook helemaal zelf ingericht op DigitalOcean, dus kan best ergens een foutje in zitten, ben nogal een noob daarmee...

Acties:
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 20:52
debug staat op true in config/app.php?

Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
APP_ENV=local
APP_DEBUG=true
APP_KEY=***

APP_LOCALE=en
APP_FALLBACK_LOCALE=en

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=site
DB_PASSWORD=***

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database

# MAIL_DRIVER=smtp
# MAIL_HOST=mailtrap.io
# MAIL_PORT=2525
# MAIL_USERNAME=null
# MAIL_PASSWORD=null
# MAIL_FROM_ADDRESS=null
# MAIL_FROM_NAME=null

# FILESYSTEM_DRIVER=local
# FILESYSTEM_CLOUD=s3

# S3_KEY=null
# S3_SECRET=null
# S3_REGION=null
# S3_BUCKET=null

# RACKSPACE_USERNAME=null
# RACKSPACE_KEY=null
# RACKSPACE_CONTAINER=null
# RACKSPACE_REGION=null


zo te zien wel...

Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Waar ik ontzettend mee heb zitten kloten is om remote toegang tot mysql te krijgen. Daartoe heb ik de volgende regel in de mysql config veranderd:

code:
1
# bind-address = 127.0.0.1


Deze regel heb ik dus uitgecomment, misschien zit daar het probleem nu?

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

xilent_xage schreef op vrijdag 18 december 2015 @ 21:26:
Waar ik ontzettend mee heb zitten kloten is om remote toegang tot mysql te krijgen. Daartoe heb ik de volgende regel in de mysql config veranderd:

code:
1
# bind-address = 127.0.0.1


Deze regel heb ik dus uitgecomment, misschien zit daar het probleem nu?
code:
1
bind-address
Zou volgens mij geen probleem moeten geven mits je de MySQL Server vanuit diezelfde machine draait, waar je de PHP op draait.

Verbind eens met je MySQLd, via commando `mysql -h localhost -u<username> -p<password>`, en binnen de MySQL shell, typ: `use <db>`, waarbij je <username>, <password>, <db> vervangt door je gebruikte username, password en databasenaam in je Lumen configuratie.

[ Voor 19% gewijzigd door Amanush op 18-12-2015 21:55 ]

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 08:14
xilent_xage schreef op vrijdag 18 december 2015 @ 21:23:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
APP_ENV=local
APP_DEBUG=true
APP_KEY=***

APP_LOCALE=en
APP_FALLBACK_LOCALE=en

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=site
DB_PASSWORD=***

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database

# MAIL_DRIVER=smtp
# MAIL_HOST=mailtrap.io
# MAIL_PORT=2525
# MAIL_USERNAME=null
# MAIL_PASSWORD=null
# MAIL_FROM_ADDRESS=null
# MAIL_FROM_NAME=null

# FILESYSTEM_DRIVER=local
# FILESYSTEM_CLOUD=s3

# S3_KEY=null
# S3_SECRET=null
# S3_REGION=null
# S3_BUCKET=null

# RACKSPACE_USERNAME=null
# RACKSPACE_KEY=null
# RACKSPACE_CONTAINER=null
# RACKSPACE_REGION=null


zo te zien wel...
Nou ben ik al heel lang uit de PHP wereld maar dat ziet er niet uit als een php config file. Is het misschien de config-file van Lumen?

Afaik moet je deze setting hebben: http://php.net/manual/en/function.error-reporting.php

Je doel in deze is om een daadwerkelijk nuttige foutmelding tevoorschijn te toveren, die meer laat zien dan alleen '500 Internal Server Error'.

[ Voor 6% gewijzigd door Ramon op 18-12-2015 22:21 ]

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Amanush schreef op vrijdag 18 december 2015 @ 21:53:
[...]

Verbind eens met je MySQLd, via commando `mysql -h localhost -u<username> -p<password>`, en binnen de MySQL shell, typ: `use <db>`, waarbij je <username>, <password>, <db> vervangt door je gebruikte username, password en databasenaam in je Lumen configuratie.
Het gekke is dat ie dan nogmaals om mijn wachtwoord vraagt. Als ik die ingeef dan krijg ik ERROR 1044 (42000): Access denied for user 'site'@'%' to database '***' (met mijn wachtwoord op de plaats van de sterretjes.

Wat wél werkt is om `mysql -h localhost -u<username> -p` in te typen, dan kan ik ook de database selecten zonder problemen.
Ramon schreef op vrijdag 18 december 2015 @ 22:20:
[...]

Nou ben ik al heel lang uit de PHP wereld maar dat ziet er niet uit als een php config file. Is het misschien de config-file van Lumen?

Afaik moet je deze setting hebben: http://php.net/manual/en/function.error-reporting.php

Je doel in deze is om een daadwerkelijk nuttige foutmelding tevoorschijn te toveren, die meer laat zien dan alleen '500 Internal Server Error'.
Klopt is idd de Lumen config file (.env). Ik wil gerust wat met de error reporting van PHP proberen, maar zou niet weten waar/hoe (ik neem aan dat Lumen dit ergens overschrijft?)

Acties:
  • +1 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 08:14
Kijk eens of je hier verder mee komt: http://stackoverflow.com/...ful-error-messages-in-php

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

xilent_xage schreef op vrijdag 18 december 2015 @ 22:30:
[...]


Het gekke is dat ie dan nogmaals om mijn wachtwoord vraagt. Als ik die ingeef dan krijg ik ERROR 1044 (42000): Access denied for user 'site'@'%' to database '***' (met mijn wachtwoord op de plaats van de sterretjes.

Wat wél werkt is om `mysql -h localhost -u<username> -p` in te typen, dan kan ik ook de database selecten zonder problemen.
[...]


Klopt is idd de Lumen config file (.env). Ik wil gerust wat met de error reporting van PHP proberen, maar zou niet weten waar/hoe (ik neem aan dat Lumen dit ergens overschrijft?)
Ziet er goed uit, zou geen probleem moeten geven.

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • tommieonos
  • Registratie: Oktober 2011
  • Laatst online: 12-10 12:11
Heb je eloquent wel geregistreerd in de IoC container? kopje "eloquent orm"

Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Oldskool PHP skills FTW :) We zijn weer een stap verder. Ik zie nu de volgende error:

FatalErrorException in UserController.php line 13:
Class 'App\User' not found

Oh en mocht iemand met hetzelfde probleem worstelen en geen errormessages in Lumen zien:

1. Voeg deze twee regels code toe in /public/index.php :

PHP:
1
2
error_reporting(-1);
ini_set('display_errors', 'On');


2. Ik zag dat Lumen de errorlog niet kon wegschrijven, heb de map schrijfrechten gegeven en ik krijg nu een nette foutmelding te zien.

Ok, maar iemand nu enig idee hoe ik de getoonde foutmelding kan oplossen? Oja, ik heb Eloquent wel geregistreerd...

Acties:
  • 0 Henk 'm!

  • sander0
  • Registratie: Juli 2010
  • Laatst online: 13-02 07:32
Ziet er naar uit dat Lumen de User model niet kan vinden. Heb je deze wel zelf aangemaakt? Bij Laravel zit deze er standaard bij maar bij Lumen moet je deze zelf aanmaken.

Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
bedankt. Jemig wat frustrerend zeg om zo vast te zitten op gewoon een niet-kloppende tutorial. De oplossing was:

Maak een file aan app/Models/user.php met daarin de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

# app/Models/Quote.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

final class User extends Model
{

}


En vervolgens in de vervang je 'use App\User' door 'use App\Models\User'.

Bedankt allen!

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 02-10 08:45
xilent_xage schreef op vrijdag 18 december 2015 @ 22:30:
[...]


Het gekke is dat ie dan nogmaals om mijn wachtwoord vraagt. Als ik die ingeef dan krijg ik ERROR 1044 (42000): Access denied for user 'site'@'%' to database '***' (met mijn wachtwoord op de plaats van de sterretjes.

Wat wél werkt is om `mysql -h localhost -u<username> -p` in te typen, dan kan ik ook de database selecten zonder problemen.
Offtopic: dan heb je per ongeluk een spatie getypt tussen -p en je wachtwoord. Persoonlijk gebruik ik sowieso liever die 2e methode zodat het wachtwoord niet in mijn terminal history terecht komt.

Ontopic: Hoe ben je er nou achtergekomen dat dat het probleem was? En enig idee wat je nu eigenlijk gedaan hebt?

Acties:
  • 0 Henk 'm!

  • sander0
  • Registratie: Juli 2010
  • Laatst online: 13-02 07:32
xilent_xage schreef op zaterdag 19 december 2015 @ 09:31:
bedankt. Jemig wat frustrerend zeg om zo vast te zitten op gewoon een niet-kloppende tutorial. De oplossing was:

Maak een file aan app/Models/user.php met daarin de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

# app/Models/Quote.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

final class User extends Model
{

}


En vervolgens in de vervang je 'use App\User' door 'use App\Models\User'.

Bedankt allen!
Ik wou inderdaad net gaan zeggen dat je namespace verkeerd stond :P Werkt het nu wel allemaal naar behoren?

Welke tutorial gebruik je? Want hij heeft zo zijn haken en ogen zie ik. (Is er bijvoorbeeld een reden dat je 'final class User' hebt inplaats van een normale class?)

[ Voor 11% gewijzigd door sander0 op 19-12-2015 09:47 ]

Pagina: 1