在PHP脚本中,无论是调用include(), require(), fopen(),还是它们的衍生物,如include_once, require_once,甚至move_uploaded_file(),都经常会遇到错误或警告:
无法打开流:没有这样的文件或目录。
什么是快速找到问题根源的良好流程?
在PHP脚本中,无论是调用include(), require(), fopen(),还是它们的衍生物,如include_once, require_once,甚至move_uploaded_file(),都经常会遇到错误或警告:
无法打开流:没有这样的文件或目录。
什么是快速找到问题根源的良好流程?
当前回答
Samba股票
如果您有一个Linux测试服务器,并且从Windows客户端工作,那么Samba共享会干扰chmod命令。所以,即使你使用:
chmod -R 777 myfolder
在Linux方面,Unix组\www-data仍然没有写权限是完全可能的。如果您的共享设置为Windows管理员映射到根目录,一个可行的解决方案是:在Windows中,打开权限,禁用带有副本的文件夹的继承,然后授予www-data的完全访问权限。
其他回答
下面的PHP设置在PHP .ini中如果设置为不存在的目录也会引发
PHP警告:未知:未能打开流:权限被拒绝 第0行未知
sys_temp_dir
upload_tmp_dir
session.save_path
Samba股票
如果您有一个Linux测试服务器,并且从Windows客户端工作,那么Samba共享会干扰chmod命令。所以,即使你使用:
chmod -R 777 myfolder
在Linux方面,Unix组\www-data仍然没有写权限是完全可能的。如果您的共享设置为Windows管理员映射到根目录,一个可行的解决方案是:在Windows中,打开权限,禁用带有副本的文件夹的继承,然后授予www-data的完全访问权限。
除了其他精彩的回答,在Windows上写一个简单的脚本时,我忽略了一件事:当试图打开一个带有Windows不支持的文件名字符的文件时,会出现这个错误。
例如:
$file = fopen(date('Y-m-d_H:i:s'), 'w+');
将:
fopen(2022-06-01_22:53:03): Failed to open stream: No such file or directory in…
Windows不喜欢:在文件名中,以及其他一些字符。
看看准确的误差
我的代码在所有机器上都工作得很好,但只有在这一台机器上开始出现问题(我猜过去是这样的)。使用echo“document_root”路径进行调试,并仔细查看了错误,发现了这个
警告: 包括(D: / MyProjects / testproject / /功能/ connections.php): 打开流失败:
你很容易就能看出问题在哪里。问题在函数之前
$document_root = $_SERVER['DOCUMENT_ROOT'];
echo "root: $document_root";
include($document_root.'/functions/connections.php');
因此,只需从include中删除提单/,它就可以正常工作。有趣的是这种行为在不同的版本上是不同的。我在笔记本电脑,Macbook Pro和这台PC上运行相同的代码,都工作得很好,直到。希望这能帮助到一些人。
复制过去浏览器中的文件位置,以确保文件存在。有时文件会被意外删除(发生在我身上),这也是我的情况。
无法打开流:在mac中没有这样的文件或目录
例如,我会上传一张图片。但是我得到了这个错误。第一件事,我会做右键点击图像和获取信息。
$ thepathofmpicture = "/Users/misstugba/Desktop/"; 配合功能使用
if(move_uploaded_file($_FILES["file"]["tmp_name"],$thePathOfMyPicture.$_FILES["file"]["name"])){
echo "image uploaded successfully";
}