Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 让fopen/fwrite写入不同的目录_Php_File_Directory_Fopen - Fatal编程技术网

Php 让fopen/fwrite写入不同的目录

Php 让fopen/fwrite写入不同的目录,php,file,directory,fopen,Php,File,Directory,Fopen,我需要写文本文件,我试着用这个代码 public function ResultsTrackingLogs( $event, $message ) { $logsDir = dirname( __FILE__ ) . "/logs/Results Tracking/$event/"; $fh = fopen( $logsDir . "$event.txt", 'x' ) or die( "can't open file" ); fwrite( $fh, $message ); fclose( $

我需要写文本文件,我试着用这个代码

public function ResultsTrackingLogs( $event, $message ) {
$logsDir = dirname( __FILE__ ) . "/logs/Results Tracking/$event/";
$fh = fopen( $logsDir . "$event.txt", 'x' ) or die( "can't open file" );
fwrite( $fh, $message );
fclose( $fh );
}
$logsDir
转换为
E:\Dropbox\htdocs\Scrapers\this
,超出了
\$event\
的范围,因此每个事件都有自己的子文件夹

不管怎样,我会调整。。即
/logs/Results Tracking/
。。或
\logs\Results Tracking\..

仍然给我一个错误
fopen(E:\Dropbox\htdocs\Scrapers\this\logs/Results Tracking/event1/event1.txt):无法打开流:没有这样的文件或目录。


目录在那里,我也在那里创建了一个.txt文件,没有找到它。问题显然在于我如何描述我的目录结构。我该如何解决这个问题?我以前不想创建目录结构,我需要它按需要创建文件夹。

检查目标目录是否存在,如果不存在,则创建它

   if(! is_dir($logsDir) ) { mkdir($logsDir, 0777, true); }

如果要描述路径,可以使用
目录\u分隔符

您对该文件授予了哪些权限?您的脚本必须具有写入权限才能访问它。错误消息中是否实际显示了
$incomingvalue
?因为如果是这样,您的变量就不会被插值,并且文件名中有文本字符串
$incomingvalue
。在这种情况下,您可能使用单引号字符串而不是双引号字符串声明文件名。我不明白如何在windows中授予文件权限。当我使用类似于
$logDir=dirname(_文件__)的东西时。“\\logs/”$fileName=$logDir$事件" - " . 日期(“F j,Y-g_i_s A”)。“.htm”$fh=fopen($fileName,'x')或die(“无法打开文件”);fwrite($fh,$message);fclose($fh)它可以工作,但这并不是创建动态目录。@DaveRandom,不。它列出了值,我只是在这里更改了它们。我将修改它以更好地反映没有斜杠/反斜杠问题。前斜杠在任何地方都有效。几乎它们唯一不工作的地方是cmd.exe-它们甚至在explorer.exe的地址栏和运行框中工作。@KiloJKilo权限参数在Windows上实际上被忽略,因为在那里没有任何意义,Windows权限不以这种方式工作。您可以传递任何值,重要的是将true传递给第三个参数。@KiloJKilo:mode在Windows上被忽略,@Fabio,谢谢您这个解决方案有效。它创建目录并写入文件。谢谢你的帮助。这是我谜题中的一大块。再次感谢。