環境
- CentOS Linux release 7.9.2009(Core)
- Apache 2.4.6
- PHP 7.1.33
起こったこと
PHPでWebスクレイピング的なプログラムをWindowsからCentOSに転送してCentOS側で実行したとき、色々なセーブデータをファイルに保存するはずが保存されてませんでした。
自分はurlencode、urldecode関数が混沌としていたためそこらへんでエラーが起こっていたと思っていました。
原因
自分はWindowsでscpでCentOSに転送してからCentOSでまたドキュメントルートに転送するスクリプトを実行していたので無駄だったため、CentOSからWindowsにscpして、というスクリプトでやっていました。
その時のスクリプトはこちら。モザイクは[]で囲っています。
apply.sh
echo -n "Host Address: "
read hostaddr
hostip="[ユーザー名]@192.168.0.$hostaddr"
hostdir=":C:[Windows側のドキュメントルート]"
host="$hostip$hostdir"
rm -r ~/docroot
scp -r $host ~
sudo cp -r ~/docroot /var/www/html
sudo rm -r /var/www/html
お察しの方がいますでしょうか。そう! sudo権限でドキュメントルートにコピーしていたのです!!
対処法
スクリプトにこのような分を追加して解決しました。
apply.sh
sudo chmod 766 /var/www/html/[セーブデータのファイル名]
まとめ
ファイルの権限管理はしっかりしましょう!