CURLOPT_COOKIEJARの出力ファイルを絶対パスで指定することにした
この投稿は最終更新日から1年以上経過しています
Windows版PHPのcURLを使ったHTTPリクエストでCookieを取得した。その際、転送オプションを
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
のように設定することでファイル出力もできる……はずなのだがどこへ行ってしまったのか。続くリクエストでCookieは送信されたから、間違いなくどこかに出力されている。
環境
- Windows 10
- XAMPP 7.3.9
- PHP 7.3.9
- cURL 7.64.0
任意の場所を指定するには
探してみると、こんなところにあった。
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を返すため、前もってファイルを作成しておく必要がある。