質問: 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()だと思っていましたが、間違った変数を取得しているのを見てきましたが、その証拠はありません。結果は同じですが、ライブサイトから情報を取得していますステージングサイトではありません。 私はすべてのコードの実行をテストし、生成したurlに直接移動したときに生成されたpdfを確認します。これにより、pdfが完全に作成されますが、_file_get_contents_関数で完了すると完全に別のことを行います(urlが正しく、テストが機能しているように見えても、間違ったurlからpdfを取得します)。 私はサイトでhtpasswdを使用していることに気付きました、_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の代わりにそれを使用している可能性があります。(私は実際にこの問題を個人的に見たことがなかったので、これもかなりうまくいかないかもしれませんが、有望に見えます。)