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.com
aber 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 ( JRoute
funktioniert 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_site
in 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.
- 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. - 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_contents
Funktion 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). - Mir ist aufgefallen, dass ich auf der Site ein htpasswd verwendet habe. Da die
file_get_contents
Funktion 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.
quelle
JUri::reset()
zuerst zu versuchen, zu sehen, ob das das Problem behebt. Wenn dies der Fall ist, hat definitiv etwas die "live_site" -Konfiguration gehacktJUri::base()
, um etwas anderes zu werden.