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 的設定上被擋掉了,所以要修改下述設定:
- sudo vim /etc/systemd/system/multi-user.target.wants/apache2.service
[Service]
PrivateTmp=false # 將此值的 true 改成 false - sudo systemctl daemon-reload # 因為修改 unit 的設定文件(.service),所以一定得要先 daemon-reload
- sudo systemctl restart apache2
再來重新執行程式,就會看到檔案產生了~