PHP 無法看到、寫入 /tmp 的解法

PHP 在寫入檔案的時候(Debain Linux),函式回傳值都是正確的,但是檔案就是沒有出現,到底發生什麼事情呢?

範例程式

<?php
var_dump(file_put_contents('/tmp/abc.txt', 'abc', FILE_APPEND | LOCK_EX)); // int(3)
?>

回傳 3 bytes 都是正確的,但是就是 /tmp/abc.txt 沒有產生

PHP 無法看到、寫入 /tmp 的解法

無法寫入 /tmp 資料的問題,在於 systemd 的設定上被擋掉了,所以要修改下述設定:

  1. sudo vim /etc/systemd/system/multi-user.target.wants/apache2.service
    [Service]
    PrivateTmp=false # 將此值的 true 改成 false
  2. sudo systemctl daemon-reload # 因為修改 unit 的設定文件(.service),所以一定得要先 daemon-reload
  3. sudo systemctl restart apache2

再來重新執行程式,就會看到檔案產生了~

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料