【发布时间】:2012-05-31 22:00:27
【问题描述】:
我正在尝试使用 php fopen 函数将文件写入我的 /tmp 目录(在 apache 服务器上),但它失败了:
<?php
$handle = fopen("/tmp/test.txt", "x");
if ($handle)
echo "Success!";
else
print_r(error_get_last());
这会返回错误信息:
打开流失败:没有这样的文件或目录。
/tmp 目录的权限设置为drwxrwxrwt,我可以看到 Web 用户正在向其写入其他文件。奇怪的是,如果我将脚本指向另一个具有777 权限的文件夹,它会返回成功。但是我的open_basedir 没有任何价值。我有safe_mode=on 和allow_url_fopen=off,但我认为这不应该解释它?
这是 Apache Httpd 2.0 上的 PHP 5.3.10。
【问题讨论】:
-
不,上面脚本的目的是测试我是否可以在我的 /tmp 文件夹中创建文件。我已经尝试了带有“x”和“w”标志的脚本。
-
感谢 Robus - 这听起来很可能 - 服务器位于一个大型、相当复杂的大学网络上。我如何验证这是否是问题所在?
-
尝试执行“ls -l /tmp”或等效命令。我在 Perl 上遇到了这个问题,脚本看到的 /tmp 目录与我实际的 /tmp 目录中的目录非常不同。
标签: php fopen tmp php-safe-mode