Laravel的File :: get()为现有文件返回null

时间:2013-05-25 17:19:29

标签: php laravel laravel-3

使用 Laravel 框架,我使用File::get()方法访问public/css目录中的CSS文件,为两个存在的文件返回null,并具有内容:

PHP代码是:

private static $css_files = array(
                        "main"   => 'css/main.css',
                        "layout" => 'css/layout.css'
                        );

public static function get_css ($vars) {

    $file     = self::$css_files[$vars["file_name"]];
    $contents = File::get(path('public').$file, "File Not Found ($file)");

    return json_encode(array("file" => path('public').$file,
                         "contents" => $contents));

}

返回我的网页(来自Chrome中的js控制台):

Object {file: "/var/www/sites/public/css/main.css", contents: null} 

文件存在:

user@pc:~$ ls /var/www/sites/public/css/main.css
/var/www/sites/public/css/main.css

有内容:

user@pc:~$ wc -l /var/www/sites/public/css/main.css
441 /var/www/sites/public/css/main.css

并且该方法不会触发$default File::get()中的get_css()参数,如果该文件不存在(使用其他有效和无效的名称进行测试),则该文件确实找到了该文件

我已尝试使用相同的PHP方法(user@pc:~$ ls -hal /var/www/sites/public/css/main.css -rw-r--r-- 1 www-data root 6.5K May 25 14:01 /var/www/sites/public/css/main.css ),其他目标目录和同一目录中的其他文件,并且它会毫无问题地返回这些文件的内容。

CSS文件的权限没问题:

<?php    
  echo file_get_contents("/var/www/sites/public/css/main.css");
?>

单独的PHP脚本,从命令行运行返回内容:

main.css

这是user@pc:~$ head /var/www/sites/public/css/main.css /* Estilos principais*/ body{ background-color:#c5c5c5; font-family:sans-serif; font-size:1.5em; color:#999; text-align:center; margin:0;

的前几行
{{1}}

这是一个错误吗?因为它不喜欢CSS文件的内容,有没有任何理由(我现在看不到)?

1 个答案:

答案 0 :(得分:6)

知道了,其中两个文件不是utf-8,json_encode()对非utf-8内容感到窒息,并返回null,问题不在File::get() },但在json_encode()

案件结案!