2

我有以下简单的脚本(精简):

define("LANG_DIR", "../../app/lang/");
// define("LANG_DIR", "/var/www/html/app/lang/");

// #############
// Some parsing of an CSV file, from with we will create .php files
// #############

foreach ($fileContent as $fileName => $value) {
    $fileString = FILE_START;

    foreach ($value as $arrayKey => $arrayValue) {
        $fileString .= TAB . "'" . $arrayKey . "'" . TAB . TAB . "=>" . TAB . TAB .  "'" . $arrayValue . "'," . NL;
    }

    $fileString .= FILE_END;

    $filePath = trim(LANG_DIR . $desLang . "/" . $fileName . ".php");
    echo $filePath;
    file_put_contents($filePath, $fileString);
}

这些是我收到的错误:

../../app/lang/de/behandeling.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/bewaarplaats.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/cron.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/gebruikers.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/handelshuis.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/heftrucks.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61
../../app/lang/de/history.php
Warning: file_put_contents() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 61

当我使用另一个(注释的)定义时,我得到了同样的错误。

问题是,我在同一个文件夹中的另一个脚本中使用了相同的定义,并且从那里我可以访问这些文件。所以路径是对的,只是file_put_contents找不到。

根据@e-Learner 的要求进行编辑 ,这是我使用时得到的输出

var_dump(is_file(LANG_DIR . $desLang . "/" . $fileName . ".php"));

// This will output:

Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 63
NULL 

编辑 2更改了更多代码:

$filePath = trim(LANG_DIR . $desLang . "/" . $fileName . ".php");

echo $filePath . "<br />";
var_dump(is_file("/var/www/html/app/lang/de/behandeling.php"));
var_dump(is_file($filePath));

这将导致:

/var/www/html/app/lang/de/behandeling.php
/var/www/html/app/lang/de/behandeling.php 
bool(true) 
Warning: is_file() expects parameter 1 to be a valid path, string given in /var/www/html/public/scripts/languageImport.php on line 68

如您所见,当我使用整个字符串时,脚本可以访问该文件。但是当我动态创建字符串(通过插入$fileName)时,它出错了......但是两个字符串都是相同的

4

1 回答 1

4

好吧,在经历了一次大麻烦之后,我找到了@naviciroel 给出的解决方案

我之前遇到过同样的错误,但我不知道我的这个解决方案是否适用于您的问题,您需要删除“\0”尝试替换它:

$cleaned = strval(str_replace("\0", "", $buttons_first));

于 2015-06-29T14:42:49.983 回答