これはバグである可能性がありますが、私は何かを見落としているに違いないと確信しています。
基本的にJUri::base()
はサブドメインパスを削除しています。これはJoomlaステージング環境のサイトグラウンドにあるため、取得するドメインは_http://staging1.domain.com
_ですが、代わりに_http://domain.com
_を取得します。
テンプレートファイルでJUri::base()
をテストしましたが、正しく機能しましたが、サイト用にビルドされたカスタムコンポーネントでは機能しませんでした。
以下にその使用方法を示します。
_$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
)
);
_
上記のコードは、生成されたPDFファイル(PDFビュー)を開き、それをtmpディレクトリに保存します。その後、スクリプトの後半に添付ファイルとして含めます(後から削除します)。
この領域で私がJUri::base()
をメールに追加すると(送信されたメールからそれが何であるかを確認できます)、サブドメインが取り除かれ、この機能を実行するコントローラーへのリダイレクトが正しいことを確認しました、しかしこの関数だけでURLが不適切になる理由は私を逃れます(JRoute
はうまく機能します)。
ファイルの内容を取得しようとしているサーバーであるため、JUri::base(true)
を使用できません。URLがないと、ファイルを正しく取得できません。また、configuration.phpファイルの_$live_site
_変数を確認しましたが、これが要因ではないことを確認しました。
ほとんどの場合、私が見落としている愚かなことです。おそらく私の目の前にあります。問題が見つかったら、更新していきます。これを引き起こす可能性のあるものはありますか?または誰かが似たようなものに遭遇しましたか?
バージョンは3.3.1です
更新:
より深く潜って、ここに私の発見があります。
JUri::base()
だと思っていましたが、間違った変数を取得しているのを見てきましたが、その証拠はありません。結果は同じですが、ライブサイトから情報を取得していますステージングサイトではありません。file_get_contents
_関数で完了すると完全に別のことを行います(URLが正しく、テストが機能しているように見えても、間違ったURLからPDFを取得します)。file_get_contents
_関数は認証する必要があるサーバー自体からURLに移動するため、最初にこのステージング環境でPDFを生成する方法がありませんでした場所。これにより、htpasswdのないライブサイトからPDFが生成されていることが確認できます。設定ファイルで「live_site」が定義されていると思います。 Juri::base()
のコードを見ると、次のifステートメントがあります。
if (trim($live_site) != '')
{
// build base url from the live_site setting
...
}
else
{
// build base url from current scheme, Host, and port
...
}
したがって、設定に「live_site」が設定されている場合、システムが現在のURLの代わりにそれを使用している可能性があります。
(私は実際にこの問題を個人的に見たことがなかったので、これもかなりうまくいかないかもしれませんが、有望に見えます。)