Php include werkt niet? functie niet inbegrepen

Hier is de volledige context van de situatie:

Ik heb onlangs een nieuwe Mac gekregen, ik ben een php-ontwikkelaar, dus ik heb MAMP gedownload en ben begonnen met ontwikkelen.

Eerst merkte ik dat mijn include niet werden opgenomen, maar ik heb dat veranderd door mijn php.inite configureren.

Als ik nu echter een bestand met een functie probeer toe te voegen, wordt de functie niet herkend.

Ik heb bijvoorbeeld een bestand met de naam functions.php:

<?php
function doit(){
    echo "did it";
}
?>

en een bestand dat het bevat, genaamd index.php

<?php include("functions.php"); doit();?>

en ik krijg deze foutmelding

Fatale fout: aanroep naar ongedefinieerde functie doit() in index.php op regel 4


Antwoord 1, autoriteit 100%

Soms is de huidige map niet wat u ervan verwacht, bijvoorbeeld wanneer u een bestand uit een opgenomen bestand opneemt.

Ik gebruik graag $_SERVER['DOCUMENT_ROOT']op mijn include, zodat ik er altijd absoluut naar kan verwijzen vanuit de root van mijn site:

<?php
    include($_SERVER['DOCUMENT_ROOT']."/includes/functions.php");
    doit();
?>

Als uw include-map zich boven uw documenthoofdmap bevindt, kunt u ..gebruiken om nog steeds te verwijzen vanuit de hoofdmap.


Antwoord 2, autoriteit 26%

Dus als iemand ooit op dit forum stuit omdat ze hetzelfde probleem hebben, laat me dan uitleggen wat en waarom het fout ging.

Als u een functie opneemt die niet in uw directory staat (bijv. c:// of file://), maar in plaats daarvan gebruikmaakt van http. De include kan alleen retourneren wat in het bestand werd herhaald, maar zoiets als een variabele of functie wordt niet weergegeven. Dus altijd functies en variabelen opnemen via een directory


Antwoord 3, autoriteit 11%

Probeer required() in plaats van include. Misschien mislukt include en worden er geen fouten getoond.


Antwoord 4, autoriteit 6%

Ik heb dat probleem ook gehad.

In mijn geval kom ik erachter dat het mogelijk uw “function.php”-bestand is. Toestemming geweigerd.

Probeer a.u.b. “chmod 777 functions.php” op de server te zetten.

Laat de functions.php uitvoeren op de webserver.

Bedankt Thatjuan, want als ik wijzig naar gebruik required(), laat de server de juiste foutmelding zien.


Antwoord 5

Voor mij was het probleem te wijten aan het feit dat een functienaam in het bijgevoegde bestand dezelfde naam had als een functie in het oorspronkelijke bestand.

Ik heb alle functienamen uniek gemaakt en heb het probleem niet meer.

Other episodes