- ベストアンサー
Cronでのカレントディレクトリについて
3日前からVine Linuxを初めてインストールしまして、 自宅サーバをやろうとしている、初心者です。 これまではxrea.comのレンタルスペースを借りてphpでコンテンツを作っていました。 phpをCronを使って、定期的実行する際に [シェルファイル] #!/bin/sh #PHP /usr/bin/php /var/www/html/filename.php exit のようにしてファイル操作をするphpを実行させたのですが [filename.php] <?php $fp=fopen("../data/dat.txt","w"); fputs($fp,$data); fclose($fp); ?> で実行したところURLからは問題なく dat.txt の内容を編集することができるのですが cronからだと PHP Warning: fopen(../data/data.txt): failed to open stream: No such file or directory となります。 そこでカレントディレクトリを調べると /root/PHPs/ となっていたので、そのようなエラーになっていました (1)カレントディレクトリを変更するコードを毎回phpに組み込む (2)フルパスでファイルを指定する ことでこのトラブルは回避されるのですが、 xrea.comでは、相対パス、カレントディレクトリを毎回指定しなくても、実行できていました。 cronでphpを実行する際に、phpが存在するディレクトリへ 自動でカレントディレクトリを移動するようにしたいです。 そのような方法があれば、教えてくください。
- みんなの回答 (3)
- 専門家の回答
お礼
はじめての質問の書き込みでしたので、返事がくるか不安でした。 お返事を頂きありがとうございます。 上のソースでうまくいきました。 ありがとうございます。^^ また、このようなコードを打たないで なんというか、自動的にphpを実行する際にカレントディレクトリを帰られるものがないのかなぁとおもっています。 えと、つまり、phpに記述しなくても、 PCのほうでphpを実行する際に、カレントディレクトリを自動で プログラムの存在する位置に移動させる設定(cron側での設定?)みたいなものがあるんじゃないだろうかと思っています。 ご存知でしたら、ご教示いただきたいです。 よろしくお願いいたします。