2016-04-28 47 views
1

我有一个users目录和登录/注册系统的子目录。我有一个文件,testing.php,试图找出如何在users目录中创建一个目录,并在同一目录中创建一个PHP文件。这里是我的代码:与fopen()php函数有问题

<?php 

$directoryname = "SomeDirectory"; 
$directory = "../" . $directoryname; 

mkdir($directory); 

$file = "../" . "ActivationFile"; 

fopen("$file", "w"); 

?> 

我能够得到mdkir($directory)工作,但不是fopen("$file", "w")

+0

你试过'fopen($文件,“w”);'? – rafaelcpalmeida

+0

@rafaelcpalmeida这是我在上面发布的代码。它没有创建该文件。 –

+0

'fopen'会返回一个句柄吗?我注意到你没有文件扩展名。 – DevDonkey

回答

1

您可以使用功能touch()创建文件:

如果文件不存在,它将被创建。

指定文件路径时,您也忘了重新使用$directory,因此文件未在新目录中创建。

正如Fred -ii-在评论中报告的那样,还应该启用错误报告。这里是这些变化的代码:

<?php 

// Enable error output, source: http://php.net/manual/en/function.error-reporting.php#85096 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$directoryname = "SomeDirectory"; 
$directory = "../" . $directoryname; 

mkdir($directory); 

$file = $directory . "/ActivationFile"; 

touch($file); 
+1

您的解决方案非常完美!我终于明白如何做这样的事情了,谢谢! –

-2

试试这个:

$dirname = $_POST["DirectoryName"]; 

$filename = "/folder/{$dirname}/"; 


if (file_exists($filename)) { 
    echo "The directory {$dirname} exists"; 
} else { 
    mkdir("folder/{$dirname}", 0777); 
    echo "The directory {$dirname} was successfully created."; 
} 
+1

为什么OP要“试试这个”?一个好的答案***将总是解释所做的事情以及为什么这样做,不仅是为了OP,还是为了将来访问SO。 –

2

试试这个,这通常应该解决您的问题。
PHP提供了一些功能来操作文件夹&路径,建议使用它们。
例如要获取当前的父文件夹,可以使用dirname function

$directoryname = dirname(dirname(__FILE__)) . "/SomeDirectory"; 

if (!is_dir($directoryname)) { 
    mkdir($directoryname); 
} 

$file = "ActivationFile"; 
$handle = fopen($directoryname . '/' . $file, "w"); 
fputs($handle, 'Your data'); 
fclose($handle); 

这条线相当于“../SomeDirectory”

dirname(dirname(__FILE__)) . "/SomeDirectory"; 

所以,当你打开文件,你打开“../SomeDirectory/ActivationFile”

fopen($directoryname . '/' . $file, "w"); 
+1

这解决了我的第二个问题。谢谢您的帮助! –