JUri :: base()の問題、サブドメインを失う


7

これはバグである可能性がありますが、私は何かを見落としているに違いないと確信しています。

基本的に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がないと、ファイルを正しく取得できません。また$live_site、configuration.phpファイルで変数を確認しましたが、これが要因ではないことを確認しました。

ほとんどの場合、私が見落としている愚かなことである可能性が高く、おそらく私の目の前にあります。調査結果が出たら、質問を更新します。これを引き起こす可能性のあるものはありますか?または誰かが似たようなことに遭遇しましたか?

バージョンは3.3.1です

更新:

より深く潜り、ここに私の発見があります。

  1. 私はそれがJUri::base()完全に間違っていると考えていましたが、間違った変数を取得しているのを見てきましたが、証拠はありません。結果は同じですが、ステージングサイトではなくライブサイトから情報を取得しています。
  2. 私はすべてのコードの実行をテストし、生成したURLに直接移動したときに生成されたpdfを確認します。PDFは完全に作成されますが、file_get_contents関数を実行すると、完全に異なる処理を実行します(間違った場所からpdfを取得します) URLは正しいようですが、テストは機能しました)。
  3. 私はサイトでhtpasswdを使用していることに気付きました。file_get_contents関数はサーバー自体からURLにアクセスするため、認証する必要があるため、このステージング環境で最初にPDFを生成する方法はありませんでした。これにより、htpasswdのないライブサイトからPDFが生成されていることが確認できます。

回答:


4

設定ファイルで「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の代わりにそれを使用している可能性があります。

(私は実際にこの問題を個人的に見たことがなかったので、これもかなりうまくいかないかもしれませんが、有望に見えます。)


はい、私が探した質問で言いましたが、最大の混乱は、テンプレートでは問題ないがコンポーネントでは問題ないことです。プラグインがそれを変更しようとしている可能性はありますか?ありそうにありませんが、この時点で私の脳は爆発しました。
ジョーダンラムスタッド2014

まあ私は間違いなく十分に質問を十分に読みませんでした...
David Fritsch 2014

それは結構です、それは間違いなく同様の問題を持つ誰かを助けることができ、それは私の質問よりも重要です:) Hail Joomla!
ジョーダンラムスタッド2014

私の他の唯一の考えは、JUri::reset()最初に試して、それがそれを修正するかどうかを確認することです。もしそうなら、何かが間違いなく "live_site"設定をハッキングしJUri::base()て別のものになりました。
David Fritsch 2014

まだこれを解決したことはありませんが、htaccessで動作するようにハッキングしました。しかし、これは一部の人にとってはそれに答えることができます。私は自分の環境に原因があると感じているので、これに答えをマークします。
ジョーダンラムスタッド2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.