phpファイルがCLIで機能するのに、ブラウザーでは機能しないのはなぜですか?

ジョン・メホーター

CLIから実行すると期待どおりに機能するphpファイルがありますが、パブリックIPアドレスを介してChromeから呼び出されると、エコーされますが、コンテンツは保存されず、cache.htmlという名前のファイルも作成されません。

<?php
$cacheFile = '/home/directories/php/cache.html';
ob_start();
echo '<h1>Hello world to cache</h1>';
$content = ob_get_contents();
ob_end_clean();
file_put_contents($cacheFile,$content);
echo $content;
?>

問題なく動作するphpページがたくさんありますが、これはWebページをファイルに保存する最初の試みです。PHPMailerを使用してファイルを自分宛にメールで送信するつもりです。現在のページをHTMLとしてサーバーに保存するというChetanSharmaの回答に触発されました

/etc/php7/cli/php.iniと/etc/php7/apache/php.iniはどちらも次のように設定されています。

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen = On

私がApacheでサービスを提供しているときに、ob_startに関するマニュアルからの警告が心配です。https://www.php.net/manual/en/function.ob-start.php

警告一部のWebサーバー(Apacheなど)は、コールバック関数を呼び出すときにスクリプトの作業ディレクトリを変更します。コールバック関数でchdir(dirname($ _ SERVER ['SCRIPT_FILENAME']))などを使用して元に戻すことができます。

私は最初に$cachefile = /cache.htmlを設定し、出力を設定します

file_put_contents(chdir(dirname($_SERVER['SCRIPT_FILENAME']))$cachefile,$content);

それはうまくいきませんでした。ただし、$cacheFile = '/home/directories/php/cache.html';CLIでは問題なく機能します。

ob_end_flush()の代わりにob_end_clean()を使用しましたが、違いはありません。

なぜブラウザで失敗するのですか?興味がありますが、最終的には、lamp / phpで生成されたWebページを、PHPMailerによる添付ファイルとして使用するために、ローカルのphp-projectディレクトリ内のファイルにフォーマットなどで保存したいと思います。これは私の最善の方法のように思えましたが、ブラウザの障害により私は困惑しました。

マンプリート

CLIのphpは、コマンドを実行しているユーザー(ログインしているユーザー)のアクセス許可の下で実行されるため、CLIからこのディレクトリを作成した可能性があるため、そのディレクトリへのアクセス許可を確実に持っています。

ブラウザでphpを実行しているユーザーのディレクトリ所有者と権限を変更します。

sudo chown -R your-apache-user /home/directories/php/
//apache-user you found as mentioned in question below

https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

[CSS機能]が[ブラウザ]では機能しないのに他のブラウザでは機能するのはなぜですか?

分類Dev

モバイルブラウザでフェッチが機能しないのはなぜですか?

分類Dev

jqueryコードがモバイルブラウザで機能しないのはなぜですか

分類Dev

次のラジオストリームURLがブラウザでは機能するのに、Rhythmboxでは機能しないのはなぜですか?

分類Dev

SendKeyEnterがChromeブラウザで機能しないのはなぜですか

分類Dev

onClick()がChromeブラウザで機能しないのはなぜですか?

分類Dev

このcreate-react-appがモバイルブラウザで機能しないのはなぜですか?

分類Dev

地理位置情報がモバイルブラウザで機能しないのはなぜですか?

分類Dev

(MouseUp mouseDown)がモバイルブラウザで機能しないのはなぜですか?

分類Dev

選択した複数のファイルがChromeブラウザで機能しないのはなぜですか?

分類Dev

このサイトのモバイルメニューがブラウザでは機能するのに、実際のモバイルデバイスでは機能しないのはなぜですか?

分類Dev

このスクリプトがターミナルで機能するのにファイルからは機能しないのはなぜですか?

分類Dev

File.WriteAllBytesが.dbファイルでは機能しないのに.csvファイルでは機能するのはなぜですか?

分類Dev

ノードシバンがAngularCLIで機能するのに、私のファイルでは機能しないのはなぜですか?

分類Dev

ヘッダーファイルがWindowsで機能するのに、MacとLinuxでは機能しないのはなぜですか?(strrev)

分類Dev

同じPOSTリクエストがPOSTMANで機能するのに、ブラウザAJAX(404 Not Found)では機能しないのはなぜですか?

分類Dev

Laravel .envおよびdatabase.phpファイルで127.0.0.1が機能しないのに、「localhost」が機能するのはなぜですか?

分類Dev

Laravelでブラウザの戻るボタンを押してもフィルターが機能しないのはなぜですか?

分類Dev

PHPコードでファイルのEOFが機能しないのはなぜですか?

分類Dev

このクエリがブレードファイルで機能しないのはなぜですか?

分類Dev

.htaccessファイルがcPanelで機能しないのはなぜですか?

分類Dev

LinuxでWindowsEXEファイルが機能しないのはなぜですか?

分類Dev

xfuncnameが.gitconfigファイルで機能しないのはなぜですか?

分類Dev

jQueryスライドダウンがテーブルで機能しないのはなぜですか?

分類Dev

urllib.request.urlopenが機能しないことがあるのに、ブラウザは機能するのはなぜですか?

分類Dev

ボタン内のファイル入力がFirefoxでは機能しないのにChromeでは機能するのはなぜですか?

分類Dev

このコードがChromeブラウザで機能しないのはなぜですか?

分類Dev

mvcでファイルをダウンロードした後にalert( 'finished')すると、コードが機能しないのはなぜですか?

分類Dev

何も送信されない場合、ブラウザーを閉じてもサーバー上のphp SSEファイルが機能し続けるのはなぜですか?

Related 関連記事

  1. 1

    [CSS機能]が[ブラウザ]では機能しないのに他のブラウザでは機能するのはなぜですか?

  2. 2

    モバイルブラウザでフェッチが機能しないのはなぜですか?

  3. 3

    jqueryコードがモバイルブラウザで機能しないのはなぜですか

  4. 4

    次のラジオストリームURLがブラウザでは機能するのに、Rhythmboxでは機能しないのはなぜですか?

  5. 5

    SendKeyEnterがChromeブラウザで機能しないのはなぜですか

  6. 6

    onClick()がChromeブラウザで機能しないのはなぜですか?

  7. 7

    このcreate-react-appがモバイルブラウザで機能しないのはなぜですか?

  8. 8

    地理位置情報がモバイルブラウザで機能しないのはなぜですか?

  9. 9

    (MouseUp mouseDown)がモバイルブラウザで機能しないのはなぜですか?

  10. 10

    選択した複数のファイルがChromeブラウザで機能しないのはなぜですか?

  11. 11

    このサイトのモバイルメニューがブラウザでは機能するのに、実際のモバイルデバイスでは機能しないのはなぜですか?

  12. 12

    このスクリプトがターミナルで機能するのにファイルからは機能しないのはなぜですか?

  13. 13

    File.WriteAllBytesが.dbファイルでは機能しないのに.csvファイルでは機能するのはなぜですか?

  14. 14

    ノードシバンがAngularCLIで機能するのに、私のファイルでは機能しないのはなぜですか?

  15. 15

    ヘッダーファイルがWindowsで機能するのに、MacとLinuxでは機能しないのはなぜですか?(strrev)

  16. 16

    同じPOSTリクエストがPOSTMANで機能するのに、ブラウザAJAX(404 Not Found)では機能しないのはなぜですか?

  17. 17

    Laravel .envおよびdatabase.phpファイルで127.0.0.1が機能しないのに、「localhost」が機能するのはなぜですか?

  18. 18

    Laravelでブラウザの戻るボタンを押してもフィルターが機能しないのはなぜですか?

  19. 19

    PHPコードでファイルのEOFが機能しないのはなぜですか?

  20. 20

    このクエリがブレードファイルで機能しないのはなぜですか?

  21. 21

    .htaccessファイルがcPanelで機能しないのはなぜですか?

  22. 22

    LinuxでWindowsEXEファイルが機能しないのはなぜですか?

  23. 23

    xfuncnameが.gitconfigファイルで機能しないのはなぜですか?

  24. 24

    jQueryスライドダウンがテーブルで機能しないのはなぜですか?

  25. 25

    urllib.request.urlopenが機能しないことがあるのに、ブラウザは機能するのはなぜですか?

  26. 26

    ボタン内のファイル入力がFirefoxでは機能しないのにChromeでは機能するのはなぜですか?

  27. 27

    このコードがChromeブラウザで機能しないのはなぜですか?

  28. 28

    mvcでファイルをダウンロードした後にalert( 'finished')すると、コードが機能しないのはなぜですか?

  29. 29

    何も送信されない場合、ブラウザーを閉じてもサーバー上のphp SSEファイルが機能し続けるのはなぜですか?

ホットタグ

アーカイブ