[PHP-users 4234] 引数の相対パスの扱い
Osamu Shigematsu
php-users@php.gr.jp
Tue, 11 Dec 2001 15:49:13 +0900
こんにちは。重松です。
PHP 4.0.6 をコマンドラインから使えるように VineLinux 2.1.5 にインストールし
ました。
sed なんかだと、同じファイルに上書きができなくて不便なので、正規表現で置換を
行うスクリプトを作成してみました。
ところが、ここでカレントディレクトリからの相対パスを渡すと、このスクリプトの
所在からの相対パスになるため、正しく動作いないことがわかりました。
どのようにすれば、スクリプトからの相対パスではなく、このスクリプトを
呼び出した時の相対パスにできるのでしょうか?
#!/usr/local/bin/php -q
<?php
if($HTTP_SERVER_VARS[argc]<4)
die("引数が少なすぎます。\n");
for($i=3; $i<$HTTP_SERVER_VARS[argc]; ++$i){
$file = $HTTP_SERVER_VARS[argv][$i];
$fp = @fopen($file, 'r');
if(!$fp)
die("ファイルが開けません。$file\n");
$buf = '';
while($x = fgets($fp,1024))
$buf .= $x;
fclose($fp);
$buf =
mbereg_replace($HTTP_SERVER_VARS[argv][1],$HTTP_SERVER_VARS[argv][2],$buf);
$fp = fopen($file, 'w');
if(!$fp)
die("ファイルが開けません。$file\n");
fputs($fp,$buf);
fclose($fp);
}
?>
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp