next up previous contents
Next: 實機操作練習題 Up: PHP 安裝 Previous: PHP MySQLi 語法   Contents   DYWANG_HOME

PHP 輸出到檔案

  1. $data 以函式 print_r 輸出到檔案 /tmp/file.txt
    $output = print_r($data, true);
    file_put_contents('/tmp/file.txt', $output);
    
  2. 編輯 b.php 將 'Connected successfully' 存到檔案 /tmp/file.txt。
    <?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = '123qwe';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass)
            or die(mysqli_connect_error().PHP_EOL);
    file_put_contents('/tmp/file.txt','Connected successfully'.PHP_EOL);
    mysqli_close($conn);
    ?>
    
  3. curl 連線 b.php,回應 Permission denied。
    [root@kvm8 ~]# curl -s http://127.0.0.1/b.php
    Permission denied
    
  4. 原因為 SELinux 管制,修改 selinux 布林值 httpd_can_network_connect 為 1。
    [root@kvm8 ~]# setsebool -P httpd_can_network_connect 1
    
  5. curl 成功連線 b.php。
    [root@kvm8 ~]# curl -s http://127.0.0.1/b.php
    
  6. 為了安全起見 php-fpm 服務將 file_put_contents() 顯示的 /tmp/file.txt,實際存在路徑是 /tmp/systemd-private-xxxxx-php-fpm.service-xxxx/tmp/file.txt。
    [root@kvm8 ~]# find /tmp -name file.txt
    /tmp/systemd-private-5703fd24db4b4a06810bcbdcbf47c485-php-fpm.service-ztfYhC/tmp/file.txt
    [root@kvm8 ~]# cat /tmp/systemd-private-5703fd24db4b4a06810bcbdcbf47c485\
    -php-fpm.service-ztfYhC/tmp/file.txt
    Connected successfully
    



De-Yu Wang 2020-04-07