php如果不存在则创建一个文件

Posted

技术标签:

【中文标题】php如果不存在则创建一个文件【英文标题】:Php create a file if not exists 【发布时间】:2014-01-02 00:28:15 【问题描述】:

我尝试创建文件并动态写入内容。下面是我的代码。

$sites = realpath(dirname(__FILE__)).'/';
$newfile = $sites.$filnme_epub.".js";

if (file_exists($newfile)) 
    $fh = fopen($newfile, 'a');
    fwrite($fh, 'd');
 else 
    echo "sfaf";
    $fh = fopen($newfile, 'wb');
    fwrite($fh, 'd');


fclose($fh);
chmod($newfile, 0777);

// echo (is_writable($filnme_epub.".js")) ? 'writable' : 'not writable';
echo (is_readable($filnme_epub.".js")) ? 'readable' : 'not readable';
die;

但是,它不会创建文件。

请分享您的答案和帮助。谢谢!

【问题讨论】:

我只是遇到了同样的问题,我想我正在尝试创建一个名称无效的文件>.format('Ymd H:i:s' ) 像个笨蛋 【参考方案1】:

在对文件进行任何操作之前确保文件存在,您只需触摸它即可:

if (!file_exists('somefile.txt')) 
    touch('somefile.txt');

这只会创建一个以当前时间为创建时间的空文件。与 fopen 相比的优点是您不必关闭文件。

如果需要,您还可以设置创建时间。以下代码将创建一个创建时间为昨天的文件:

if (!file_exists('somefile.txt')) 
    touch('somefile.txt', strtotime('-1 days'));

但是:您应该注意如果您对已经存在的文件使用触摸,文件的修改时间将会改变。

【讨论】:

@MarcinOrlowski ifs 的要点是,如果文件已经存在,您可能不想更改文件的创建或修改时间。 如果你写入那个文件,你无论如何都会改变它 如果你在一个不存在的文件上使用 fopen(),它会创建它,前提是该文件是为写入 (w) 或附加 (a) 而打开的。【参考方案2】:

使用is_file函数检查文件是否存在。

如果文件不存在,此示例将创建一个新文件并添加一些内容:

<?php

$file = 'test.txt';

if(!is_file($file))
    $contents = 'This is a test!';           // Some simple example content.
    file_put_contents($file, $contents);     // Save our content to the file.


?>

【讨论】:

【参考方案3】:

尝试使用:

$fh = fopen($newfile, 'w') or die("Can't create file");

用于测试是否可以在那里创建文件。

如果您无法创建文件,那可能是因为网络服务器用户(通常是“www”或类似名称)无法写入该目录。

对您要创建文件的文件夹执行chmod 777 folder,然后重试。

有效吗?

【讨论】:

再次阅读答案。我没有说任何关于根文件夹的事情。假设您有一个像“bob”这样的用户名。 Web 服务器以完全不同的用户身份运行(比如说“www”)。 "www" 不能写入 "bob" 的文件夹,除非: 1) "www" 被添加到 "bob" 的组并且该文件夹至少有 775 权限。 2)您将文件夹的所有者从“bob”更改为“www”(使用chown)。 3) 文件夹可以被任何用户写入(它有777个权限,你可以使用chmod更改它们)。 永远不要将您的文件夹或文件权限设置为 777。有关详细信息,请参阅this post。

以上是关于php如果不存在则创建一个文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP之文件锁

php 如果它不存在,请创建`$ dir`目录。如果它包含超过`$ max`文件,则创建`$ dir.part $ level`。返回上次创建的目录n

如果不存在,则使用 mysqli + php 创建数据库

如果文件不存在,则创建一个文件

如果文件不存在,则创建一个文件

检查文件夹,如果不存在则创建它