Publicerad react-sida har kvar den lokala kopplingen till databasen

Permalänk

Publicerad react-sida har kvar den lokala kopplingen till databasen

Jag använder mig av create-react-app och när jag nu har publicerat min webbsida så ligger den lokala sökvägen till databasen kvar trots att jag har angett publika databasens data. Jag har kört npm run build och resten av sidan visas utan problem.

Måste jag göra något mer?
Har sökt en massa på nätet men hittar ingenting.

<?php $servername = "reusesport.se.mysql"; $username = "reusesport_se"; $password = "abababab"; $dbname = "reusesport_se"; $connect = mysqli_connect($servername, $username, $password, $dbname); if (mysqli_connect_errno()){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); die(); } mysqli_set_charset($connect, 'utf8'); $result = $connect->query($sql); ?>

Felkoden jag får

<br />
<b>Warning</b>: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in <b>/Applications/XAMPP/xamppfiles/htdocs/reusesport/src/api/connect.php</b> on line <b>8</b><br />
<br />
<b>Warning</b>: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in <b>/Applications/XAMPP/xamppfiles/htdocs/reusesport/src/api/connect.php</b> on line <b>8</b><br />
Failed to connect to MySQL: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

Permalänk
Medlem

Ska $servername sluta på ".mysql"?

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk

@jovnas: ja. Tycker också att det är lite konstigt men så är det.

Permalänk
Medlem

Är du säker? Enligt ICANN, så finns det ingen TLD med det namnet. Det är inte mysql.reusesport.se det ska stå då?

PHP kör ju på servern, så om MySQL kör på samma maskin kan ju localhost / 127.0.0.1 möjligen fungera.

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk

@jovnas:
Det står att det ska se ut så här. Använder mig av one.com.

Mitt Host-namn: reusesport.se.mysql

Deras exempel på hur det ska se ut:
$con=mysqli_connect("example.com.mysql", "username", "password", "database");

Lokalt fungerar det perfekt men det är när jag ska publicera sidan som databaskopplingen slutar fungera. Det verkar som det någonstans finns kvar en koppling till den lokala databasen.

Permalänk
Medlem

Ok. Då har de gjort en specialare med sin interna DNS.
Det är nog lättast att fråga One i så fall.

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Adressen:

mysql.reusesport.se

finns. Men inte reusesport.se.mysql

Med vänlig hälsning Lazze

Permalänk

@jovnas: Har frågat dem men de svara bara att det är rätt.

Permalänk
Medlem

Ok... Bara för att vara lite jobbig, men php-koden du postade körs på webb-hotellet också antar jag?
Du nämnde React i titeln, det är inte så att React försöker prata med localhost istället för webb-hotellet?

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk

@jovnas: Ja php-koden köra på webbhotellet och jo react försöker prata med localhost istället för webbhotellet.

I min connect.php fil har jag webbhotellets databas uppgifter men i felkoden så refererar den till localhost. Vet inte var det ligger kvar någonstans...

Permalänk
Medlem

Felet du postade i trådstarten är ju från PHP och nämner inte localhost. Var får du felmeddelandet som nämner localhost och hur lyder det felmeddelandet?
Du nämnde att React försöker prata med localhost. Det är inte helt enkelt så att du behöver ange relativa sökvägar i din React-app, eftersom du försöker publicera den till webb-hotellet?
Har du någon länk man kan kika på för att se hur det beter sig?

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk

@jovnas: www.reusesport.se

Den är inte helt fungerande ännu på mer än ett sätt. Går du in på Home sidan och skriver in din mailadress under nyhetsbrev så får du felmeddelandet i consolen.

Har kommit på att jag använder localhost i api anropen det är inte det som är problemet just nu tror jag. Kan jag publicera api:erna på min egen sida eller måste jag publicera dem externt.
Som du märker har jag aldrig publicerat med reactsida med databas förut, därav en del oklarheter och dumma frågor.

Permalänk
Medlem
Skrivet av Snillet71:

@jovnas: www.reusesport.se

Den är inte helt fungerande ännu på mer än ett sätt. Går du in på Home sidan och skriver in din mailadress under nyhetsbrev så får du felmeddelandet i consolen.

Har kommit på att jag använder localhost i api anropen det är inte det som är problemet just nu tror jag. Kan jag publicera api:erna på min egen sida eller måste jag publicera dem externt.
Som du märker har jag aldrig publicerat med reactsida med databas förut, därav en del oklarheter och dumma frågor.

Nu kan jag inte just PHP, men jag har arbetat med SQL, ReactJS och .NET.
Hur ser ditt fetch-anrop ut från clienten? Felmeddelandet visar att du försöker anropa "http://localhost:80/reusesport/src/api/homepictures.php"

Edit:
Grävde lite i debuggern i din källkod, fann detta för Newsletter.

fetch('http://localhost/reusesport/src/api/newsletter.php', { method: 'POST', body: JSON.stringify(data) }) .then(resp => resp.text()) .then(data => console.log(data)) .then(resp=>console.warn("result", resp))

Du för söker alltså anropa från localhost.

Permalänk

@zaibuf: Ja just nu gör jag det. Är det det som är problemet med att den inte hittar databasen?
Du kanske vet om jag måste publicera API:erna externt eller kan jag göra det på min webbsida?

Permalänk
Medlem

I din react-app, som är något som exklusivt körs i webbläsaren så anropar den localhost utifrån det kontextet. Alltså: om jag går till hemsidan så försöker den nå localhost på MIN dator, när du kör på din dator försöker den anropa localhost på DIN dator o.s.v. Detta funkar såklart bra när du kör hela ditt system lokalt vid utveckling och testning. Men när du publicerar på internet måste den anropa en publik adress antingen direkt med IP:t eller via ett publikt domännamn.

Generellt programmeringstip: Spara ALDRIG lösenord hårdkodat i källkod. använd environment-variabler (sv. miljövariabler).

Permalänk
Medlem
Skrivet av Snillet71:

@zaibuf: Ja just nu gör jag det. Är det det som är problemet med att den inte hittar databasen?
Du kanske vet om jag måste publicera API:erna externt eller kan jag göra det på min webbsida?

Ja alltså, localhost är ju på den lokala hårddisken. Så då försöker den anropa något från min dator då jag besöker sidan och jag har inte den där PHP-filen den letar efter. Vilket den också inte tillåter, varav felmeddelandet du får.

Din webbserver måste du publicera tillsammans med databasen, de sakerna hör indirekt ihop. Servern hanterar requests/responses och hämtar/skriver mot en databas. React och clienten ska bara anropa webbservern och få/posta data.

Just nu är det lite som att du är på ett hotell i Spanien och försöker öppna ditt kylskåp hemma.

Edit: Kan också tillägga att det ser inte ut som att du har kört en build av din React-app, utan du verkar ha publicerat alla filer på något annat vis. I vanlig fall då man bygger så ska man enbart se den statiska mappen, nu kommer jag åt alla dina componenter via debuggern.

Permalänk
Medlem
Skrivet av zaibuf:

Ja alltså, localhost är ju på den lokala hårddisken.

Hur ska jag man annars nå själva hjärtat?

Permalänk
Medlem
Skrivet av dlq84:

Hur ska jag man annars nå själva hjärtat?

Vet inte hur det fungerar på One.com då jag enbart använt mig av Azure och .NET.
Men då gör man en build och deploy av hela sin webbapplikation, där man lägger upp webbapplikation, webbserver och en databas. Sökvägarna för JavaScript ser då ut som t.e.x. fetch("/Customer/Details/");

Sen får man ändra connectionstring att hantera SQL databsaen från cloud istället för den lokala man använt under utvecklingen, detta gör man enklast via enviroment variabler som injectar strängen beroende på utvecklingsmiljö ex: (produktion, testning, utveckling).

Kortfattat så kan du inte använda en localhost källa då du har hostat en applikation, det fungerar bara i utvecklingsmiljö.

Permalänk

@zaibuf: Jo jag har kört npm run build. Men jag kan ha fört över för många filer. Är det bara static mappen som behöver publiceras?

Tack för förklaringen av localhost
Märks det att jag inte har håll på så länge med programmering.

Permalänk
Medlem
Skrivet av Snillet71:

@zaibuf: Jo jag har kört npm run build. Men jag kan ha fört över för många filer. Är det bara static mappen som behöver publiceras?

Tack för förklaringen av localhost
Märks det att jag inte har håll på så länge med programmering.

Ah okej, var ett tag jag deployat en app med React, då jag för det mesta utvecklar i backend. Kikade runt och verkar vara korrekt, ser componenterna på övriga sidor också.

Vad får dig att göra en sån här stor applikation med databas, webbserver och ReactJS då du inte hållt på så länge med programmering? Babysteps.

Permalänk

@zaibuf: En idé som jag ville prova om den fungerar och för att lära mig programmera ordentligt.
Har lärt mig så otroligt mycket under tiden jag utvecklat sidan och upptäcker hela tiden nya saker jag måste lära mig. Som detta...

Tack så jättemycket för hjälpen, nu vet jag hur jag ska få det att fungera.

Permalänk
Medlem
Skrivet av zaibuf:

Vet inte hur det fungerar på One.com då jag enbart använt mig av Azure och .NET.
Men då gör man en build och deploy av hela sin webbapplikation, där man lägger upp webbapplikation, webbserver och en databas. Sökvägarna för JavaScript ser då ut som t.e.x. fetch("/Customer/Details/");

Sen får man ändra connectionstring att hantera SQL databsaen från cloud istället för den lokala man använt under utvecklingen, detta gör man enklast via enviroment variabler som injectar strängen beroende på utvecklingsmiljö ex: (produktion, testning, utveckling).

Kortfattat så kan du inte använda en localhost källa då du har hostat en applikation, det fungerar bara i utvecklingsmiljö.

Det var ett skämt eftersom du kallade datorn för hårddisk.

Permalänk
Medlem
Skrivet av dlq84:

Det var ett skämt eftersom du kallade datorn för hårddisk.

Ni har samma ikon, blev förvirrad till vem jag svarade..
Den söker efter de efterfrågade filerna på din lokala hårddisk. Men ja, localhost är din dator.

Permalänk
Medlem
Skrivet av zaibuf:

Ni har samma ikon, blev förvirrad till vem jag svarade..
Den söker efter de efterfrågade filerna på din lokala hårddisk. Men ja, localhost är din dator.

Ska man vara tekniskt korrekt (den bästa formen av korrekt) "söker" datorn inte efter några "filer" alls. Den gör ett request till en adress. "localhost" är ett särskilt hostnamn som, när det slås upp, (vanligtvis) refererar tillbaka till ett mini-nätverk (127.0.0.1, eller ::1 i IPv6) som körs lokalt på samma dator.

Visa signatur

Kom-pa-TI-bilitet