为什么使用x模式进行fopen会使我“无法打开流:没有此类文件或目录”

我想使用x模式,因为从php.net中可以看到,如果该文件存在,它将给出错误并返回false,如果不存在,它将创建它(也是目录的)。

这是脚本。它位于www.ex.com/s/index.php

$urlParts = "/img/logo.png";
$fp = fopen( __DIR__ . $urlParts, "x" );

如果它不存在,则应该创建logo.png(并创建目录/ img /)...但是它不能像这样工作。

有人可以帮忙吗?谢谢!

Umair Anwar |
fopen("/img/logo.png","x");

在任何情况下都不会创建img目录。如果目录不存在,则它将始终抛出此警告。

警告:fopen(/img/logo.png):无法打开流:没有这样的文件或目录

fopen("logo.png","x");

如果logo.png尚不存在,它将在没有任何警告的情况下创建它。如果logo.png已经存在,那么它将始终抛出此警告。

警告:fopen(logo.png):无法打开流:没有这样的文件或目录

fopen(“”,“ x”)等同于为基础open(2)系统调用指定O_EXCL | O_CREAT标志。现在,让我帮助您了解为什么会发生这种情况。

在POSIX中,如果O_CREAT标志尚不存在,则该文件将被创建。如果包含O_CREAT标志,则还必须传递第三个参数以打开以指定权限。如果要避免覆盖现有文件,请结合使用O_CREAT | O_EXCL。如果文件已经存在,则此组合将返回错误。

使用POSIX的C程序

#include <fcntl.h>
#include <sys/stat.h>
int open(const char *path, int oflag, ...);

结论:因此,仅当我们要避免覆盖现有文件时,才使用“ x”模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP-无法打开流:在该目录中没有此类文件或目录

Laravel pdf问题:无法打开流:使用barryvdh / laravel-dompdf软件包没有此类文件或目录

无法打开流。仅在__destruct()中没有此类文件或目录

无法打开流:Homestead环境中没有此类文件或目录

require_once('soap.php')无法打开流没有此类文件或目录

警告:include(xxxx):无法打开流:没有此类文件或目录

awk:致命:无法打开文件'进行读取(没有此类文件或目录)

包含文件时出错-警告:include(connect.php):无法打开流:没有此类文件或目录

当我尝试运行ApiGen时,出现PHP警告:require(Texy.php):无法打开流:没有此类文件或目录

创建儿童主题。“警告:file_get_contents9():无法打开流:没有此类文件或目录”错误

警告:未知:无法打开流:在第0行(php)的“未知”中没有此类文件或目录

application / config / doctrine / proxies \ __ CG__ConcreteCoreEntitySiteType.php):无法打开流:没有此类文件或目录,具体为5

错误消息 include_path,无法打开流:共享主机上没有此类文件或目录

致命:无法打开文件.git / rebase-merge / done进行读取:没有此类文件或目录

无法打开共享对象文件:有文件时没有此类文件或目录错误

Dockerfile:无法打开文件“ ./main.py”:[Errno 2]没有此类文件或目录

python:无法打开文件get-pip.py错误2]没有此类文件或目录

无法打开包含文件:“ QWebView”:没有此类文件或目录

无法打开包含文件:'cpprest / ws_client':没有此类文件或目录

无法打开文件“ hello_world.py”:[Errno 2]没有此类文件或目录

尝试执行php文件时,PHP无法打开Stream没有此类文件或目录

python:无法打开文件“ hello_world”:[Errno 2]没有此类文件或目录

巢:ENOENT:没有此类文件或目录,请打开

mkdir:无法创建目录:没有此类文件或目录

cp:无法创建目录:没有此类文件或目录

无法删除文件-没有此类文件或目录

file_put_contents(C:\ xampp \ htdocs \ instant \ storage \ framework / sessions / FF):无法打开流:没有此类文件或目录

警告:无法打开流:第17行的C:\ wamp \ www \ laravel \ bootstrap \ autoload.php中没有此类文件或目录

无法激活virtualenv:没有此类文件或目录