2017-02-22 82 views
0

我想动态创建迁移文件,并遇到与fopen函数有关的问题,每当我使用动态字符串为文件名称调用函数时出现以下错误:使用动态字符串PHP fopen无效参数

"failed to open stream: Invalid Argument. 

现在奇怪的是,当我把导致错误,并把它固定在fopen函数的字符串FILE_NAME,它的工作原理,并创建文件。

这里是失败的部分代码:

public function add_tables($from, $to) { 
     $migration_name = $this->generate_migration_name($from, $to); 
     $migration_file = fopen($migration_name, "w") or die("Unable to open file!"); 
     $migration_content = "..."; 
     fwrite($migration_file, $migration_content); 
    } 
public function generate_migration_name($from, $to) { 
      $current_date = Date('Y_m_d_His'); 
      return $current_date."_create_msl_".$from."_to_".$to."_table.php"; 
     } 

我我做错了什么?

更新:$to$from是使用fgets函数从文本文件中读取的两个字符串。示例为失败的字符串:

2017_02_22_154148_create_msl_yeshut_yatzran_to_mimshak_table.php 

当我把它固定在fopen函数中时,文件被成功创建。

+0

'$ migration_name'里面有什么?你确定它是一个字符串吗? _(我认为是这样,但是......你知道......魔术)_ –

+0

用值'$ from'和'$ to'来更新问题,结果出现错误。 –

+0

@AlexBlex更新。 – BoooYaKa

回答

1

你可能在你的文件名空间。你可以使用trim删除它们:

public function generate_migration_name($from, $to) { 
    $current_date = Date('Y_m_d_His'); 
    return $current_date."_create_msl_".trim($from)."_to_".trim($to)."_table.php"; 
} 
+0

修剪做了工作!我试图用str_replace删除空格,但没有成功。谢谢! – BoooYaKa

0

您要创建的文件是不是在你的服务器或检查文件权限

+0

当我尝试使用带有固定字符串的函数时,它会成功创建文件,所以我不认为它与文件不存在或权限有关。 – BoooYaKa