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

PHP fopen invalide arguments when using dynamic string

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

"failed to open stream: Invalid Argument.

现在奇怪的是,当我获取导致错误的 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 函数中时,文件创建成功。

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

您的文件名中可能有空格。您可以使用 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";
}