日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » ftp_rawlistでのワーニング

ftp_rawlistでのワーニング

ページ: 1

投稿者 投稿
会員
登録者: 1 2008
返信数: 2
はじめまして。
FreeBSD(4.9)上で、Apache(1.3)+mod_php(4.4.0)を使用しています。
下記のようなコードで、自身(localhost)のFTPにアクセスさせようとしています。
引用
<?php
$ftp_host = "myself";
$ftp_user = "user";
$ftp_pass = "pass";

// print ("this is test for phpwebftp.");
$ftp_handle = ftp_connect ($ftp_host) or exit ("Failed");
if (ftp_login ($ftp_handle, $ftp_user, $ftp_pass)) {
// ftp_chdir ($ftp_handle, "/usr/xxxx");
print (ftp_pwd ($ftp_handle));
$filelist = ftp_rawlist ($ftp_handle, '.');
foreach ($filelist as $val) {
print $val . "\n";
}
}
ftp_close ($ftp_handle);
?>

このとき、ログオンまでは正常にできるのですが、ディレクトリのリストを取得する部分で、
引用
Warning: ftp_rawlist(): Unable to create temporary file. Check permissions in temporary files directory. in /usr/xxxxxxx/test.php on line 16

というワーニングが発生して、リストが取得できません。
そこで質問です。

1.
このワーニングが指摘している「temporary file」とは、どのことを指しているのでしょうか?

2.
そして正常にリストを取得できるようにするには、どのような設定をすればよいでしょうか?

ご教示いただきたくお願いします。
管理者
登録者: 2 2008
返信数: 4
ftp_rawlistは、ftpのLISTコマンドの結果を一時的にファイルに格納します。ここで言う「temporary file」とは、その一時的に格納されるファイルのことです。一時ファイルは「temporary directory」に作成されます。

「temporary directory」が具体的にどのディレクトリになるかは環境によって変わってきますが、優先順位の高い順に書くと

1. 環境変数 TMPDIR
2. システムの P_tmpdir ディレクトリ (/usr/include/stdio.h に指定されています)

となります。

Apache が動作している環境で環境変数 TMPDIR を設定していないのなら、P_tmpdir になり、これは FreeBSD の場合は /var/tmp のようです。

ということで、Apache プロセスのオーナ UID/GID で「temporary directory」が書き込み可能になっているかどうかを確認すればよいでしょう。
会員
登録者: 1 2008
返信数: 2
非常に丁寧でわかりやすい回答をいただきありがとうございました。
期待通りの結果が得られるようになりました。
本当にありがとうございました。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » ftp_rawlistでのワーニング

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています