使用动态字符串时PHP fopen参数无效

使用动态字符串时PHP fopen参数无效,php,arguments,fopen,Php,Arguments,Fopen,我正在尝试动态创建迁移文件,但我遇到了fopen函数的问题,每当我使用文件名的动态字符串调用该函数时,我都会收到以下错误: "failed to open stream: Invalid Argument. 现在,wierd的事情是,当我获取导致错误的file_name字符串,并将其放入fopen函数中,它会工作并创建文件 以下是代码中失败的部分: public function add_tables($from, $to) { $migration_name = $this-

我正在尝试动态创建迁移文件,但我遇到了fopen函数的问题,每当我使用文件名的动态字符串调用该函数时,我都会收到以下错误:

"failed to open stream: Invalid Argument.
现在,wierd的事情是,当我获取导致错误的file_name字符串,并将其放入fopen函数中,它会工作并创建文件

以下是代码中失败的部分:

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函数中时,文件创建成功。

您尝试创建的文件不在服务器中,或者检查文件权限。

您的文件名中可能有空格。可以使用“修剪”将其删除:

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";
}

$migration\u name
里面有什么?你确定这是一根绳子吗?(我想是的,但是..你知道…魔法)用值
$from
$to
更新问题,这两个值会导致错误。@AlexBlex已更新。你是否回显生成迁移名称($from,$to)?@LucaJung是的,回显是我所期望的,就像我在更新中发布的示例字符串。当我尝试使用带有固定字符串的函数时,它成功地创建了文件,因此我认为这与文件不存在或权限无关。trim成功了!我试图用str_replace删除空白,但没有成功。非常感谢。