JUri :: base () Problem, Subdomain verloren


7

Es besteht die Möglichkeit, dass dies ein Fehler ist, aber ich bin mir ziemlich sicher, dass ich etwas übersehen muss.

Im Grunde genommen JUri::base()wird der Subdomain-Pfad entfernt. Dieser befindet sich im Siteground mit seinen Joomla-Staging-Umgebungen. Die Domain, die er erhalten sollte, ist, http://staging1.domain.comaber stattdessen http://domain.com.

Ich habe JUri::base()in der Vorlagendatei getestet und es hat korrekt funktioniert, aber in der benutzerdefinierten Komponente, die für die Site erstellt wurde, funktioniert dies nicht.

So wird es verwendet:

$tmpFileName = md5($id.$Itemid.time()).'.pdf';
file_put_contents(
  JPATH_SITE.'/tmp/'.$tmpFileName,
  file_get_contents(
    JUri::base()
    .'index.php?option=com_component&view=finish&format=pdf&tmpl=component&data='
      .$id
      .'&Itemid='
      .$Itemid
  )
);

Der obige Code öffnet eine generierte PDF-Datei (eine PDF-Ansicht), speichert sie im tmp-Verzeichnis und fügt sie später im Skript als Anhang ein (Löschen der Nachwörter).

Wenn JUri::base()ich in diesem Bereich der E-Mail etwas hinzufüge (damit ich sehen kann, was es gemäß der gesendeten E-Mail ist), wird die Subdomain entfernt. Ich habe bestätigt, dass die Umleitung zum Controller, der diese Funktion ausführt, korrekt ist, aber der Grund, warum die URL kommt out unsachgemäß nur in dieser Funktion entgeht mir ( JRoutefunktioniert gut).

Ich kann nicht verwenden, JUri::base(true)da der Server versucht, den Inhalt der Datei abzurufen. Ohne die URL kann er die Datei daher nicht korrekt abrufen. Außerdem habe ich $live_sitein der Datei configuration.php nach der Variablen gesucht und bestätigt, dass dies kein Faktor ist.

Höchstwahrscheinlich ist es etwas Dummes, das ich übersehen habe, höchstwahrscheinlich direkt vor meinem Gesicht, und ich werde die Frage mit allen Ergebnissen aktualisieren, wenn ich gehe. Gibt es also irgendetwas, das dies verursachen könnte? Oder ist jemand auf etwas Ähnliches gestoßen?

Version ist 3.3.1

AKTUALISIEREN:

Tiefer getaucht und hier sind meine Erkenntnisse.

  1. Ich habe mich geirrt JUri::base(), als ich dachte, es sei vollständig, obwohl ich gesehen hatte, dass es die falsche Variable bekommt, sehe ich jetzt keine Beweise dafür, obwohl das Ergebnis dasselbe ist, werden Informationen von der Live-Site und nicht von der Staging-Site abgerufen.
  2. Ich habe die Ausführung des gesamten Codes getestet und das generierte PDF überprüft, wenn ich direkt zu der von ihm generierten URL gehe. Es erstellt das PDF perfekt, aber wenn ich mit der file_get_contentsFunktion fertig bin, macht es etwas völlig anderes (greift ein PDF vom falschen ab URL, obwohl die URL korrekt zu sein scheint und das Testen funktioniert hat).
  3. Mir ist aufgefallen, dass ich auf der Site ein htpasswd verwendet habe. Da die file_get_contentsFunktion vom Server selbst auf die URL zugreift, muss sie sich authentifizieren. Daher sollte in dieser Staging-Umgebung überhaupt kein PDF erstellt werden. Dies bestätigt, dass das PDF von der Live-Site generiert wird, die kein htpasswd hat.

Antworten:


4

Ich vermute, dass Sie die "live_site" in Ihrer Konfigurationsdatei definiert haben. Beim Betrachten des Codes Juri::base()gibt es diese if-Anweisung:

if (trim($live_site) != '')
{
    // build base url from the live_site setting
    ...
}
else
{
    // build base url from current scheme, host, and port
    ...
}

Wenn Sie also "live_site" in Ihrer Konfiguration festgelegt haben, verwendet das System diese möglicherweise anstelle Ihrer aktuellen URL.

(Ich habe dieses Problem noch nie persönlich gesehen, daher könnte dies auch weit entfernt sein, aber es sieht vielversprechend aus.)


Ja, ich habe versucht zu sagen, dass ich danach gesucht habe. Die größte Verwirrung ist, dass es in der Vorlage in Ordnung ist, aber nicht in der Komponente. Möglicherweise versucht ein Plugin, es zu ändern. Scheint unwahrscheinlich, aber zu diesem Zeitpunkt ist mein Gehirn explodiert.
Jordan Ramstad

Nun, ich habe die Frage definitiv nicht genau genug gelesen ...
David Fritsch

Es ist in Ordnung, es könnte definitiv jemandem mit einem ähnlichen Problem helfen und das ist wichtiger als meine Frage :) Gegrüßet seist du Joomla!
Jordan Ramstad

Mein einziger anderer Gedanke ist, JUri::reset()zuerst zu versuchen, zu sehen, ob das das Problem behebt. Wenn dies der Fall ist, hat definitiv etwas die "live_site" -Konfiguration gehackt JUri::base(), um etwas anderes zu werden.
David Fritsch

Immer noch nie gelöst, aber gehackt, um mit htaccess zu arbeiten. Aber das kann es für manche Menschen beantworten. Ich fühle, dass es an meiner Umgebung liegt, daher ist dies die Antwort.
Jordan Ramstad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.