CURLOPT_COOKIEJARの出力ファイルを絶対パスで指定することにした

この投稿は最終更新日から1年以上経過しています

Windows版PHPのcURLを使ったHTTPリクエストでCookieを取得した。その際、転送オプションを

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

のように設定することでファイル出力もできる……はずなのだがどこへ行ってしまったのか。続くリクエストでCookieは送信されたから、間違いなくどこかに出力されている。

環境

任意の場所を指定するには

探してみると、こんなところにあった。

C:\xampp\cookie.txt

スクリプトはDドライブに置いてある。試しに/cookie.txtとしたら、当然のごとくC直下に出力されてしまった。

このままだと扱いにくいので絶対パス化して指定することにした。

//方法1 realpath()
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));

//方法2 マジック定数
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookie.txt');
//または
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');

これでスクリプトと同じフォルダに保存される。なお、realpath()は存在しないパスを指定するとFALSEを返すため、前もってファイルを作成しておく必要がある。