php 项目,线上碰到个奇怪问题,使用fwrite写入tmpfile() 失败。这里的失败并不是指fwrite返回 false,而是返回int(0),写入 0 个字节。代码很简单如下所示:
$f = tmpfile(); $length = fwrite($f, '123'); var_dump($length);
通过浏览器访问,即php-fpm方式下,输出 int(0)。我做了其他几种情况的测试:
命令行环境:代码原封不动,执行是可以成功写入的。
php-fpm 浏览器访问:将 tmpfile() 替换成fopen('非 /tmp 目录', 'w+'),php-fpm 下可以写入,输出 int(3)
php-fpm 浏览器访问:将 tmpfile() 替换成 fopen('/temp/test-randomstring', 'w+'),输出 int(0)
立即学习“PHP免费学习笔记(深入)”;
当前问题已经通过其他迂回方式解决,但是为何写入失败还没有查出原因。最初是怀疑跟服务器的磁盘剩余空间有关(仅剩 10M),但是 1 2 两次测试说明 10M 应该是够用的。
请问大家有什么好的查 BUG 思路?或碰到过类似问题?
更新, 新增了一段测试代码
$name = date("His");
echo "File /tmp/$name.txt\n";
shell_exec('echo "123" > /tmp/'.$name.'.txt');
var_dump(file_exists('/tmp/'.$name.'.txt'));
var_dump(file_get_contents('/tmp/'.$name.'.txt'));命令行执行,文件写入正常。 php-fpm 跑的时候,文件始终写入 0 字节,但文件是创建成功了的
php 项目,线上碰到个奇怪问题,使用fwrite写入tmpfile() 失败。这里的失败并不是指fwrite返回 false,而是返回int(0),写入 0 个字节。代码很简单如下所示:
$f = tmpfile(); $length = fwrite($f, '123'); var_dump($length);
通过浏览器访问,即php-fpm方式下,输出 int(0)。我做了其他几种情况的测试:
命令行环境:代码原封不动,执行是可以成功写入的。
php-fpm 浏览器访问:将 tmpfile() 替换成fopen('非 /tmp 目录', 'w+'),php-fpm 下可以写入,输出 int(3)
php-fpm 浏览器访问:将 tmpfile() 替换成 fopen('/temp/test-randomstring', 'w+'),输出 int(0)
立即学习“PHP免费学习笔记(深入)”;
当前问题已经通过其他迂回方式解决,但是为何写入失败还没有查出原因。最初是怀疑跟服务器的磁盘剩余空间有关(仅剩 10M),但是 1 2 两次测试说明 10M 应该是够用的。
请问大家有什么好的查 BUG 思路?或碰到过类似问题?
更新, 新增了一段测试代码
$name = date("His");
echo "File /tmp/$name.txt\n";
shell_exec('echo "123" > /tmp/'.$name.'.txt');
var_dump(file_exists('/tmp/'.$name.'.txt'));
var_dump(file_get_contents('/tmp/'.$name.'.txt'));命令行执行,文件写入正常。 php-fpm 跑的时候,文件始终写入 0 字节,但文件是创建成功了的
权限
chmod 777 /tmp/test-randomstring
再试试可写就说明是权限问题
可以用chown改写文件拥有者,chmod再改为安全的权限。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号