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";
}
我正在尝试动态创建迁移文件,但我遇到了 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";
}