mst*_*rdy 0 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));
}
Run Code Online (Sandbox Code Playgroud)
返回我的网页(来自Chrome中的js控制台):
Object {file: "/var/www/sites/public/css/main.css", contents: null}
Run Code Online (Sandbox Code Playgroud)
该文件存在:
user@pc:~$ ls /var/www/sites/public/css/main.css
/var/www/sites/public/css/main.css
Run Code Online (Sandbox Code Playgroud)
有内容:
user@pc:~$ wc -l /var/www/sites/public/css/main.css
441 /var/www/sites/public/css/main.css
Run Code Online (Sandbox Code Playgroud)
并且该方法不会触发$default参数,File::get()因为它应该在文件不存在的情况下(使用其他有效和无效的名称进行测试),因此它肯定找到了该文件.
我已尝试在同一PHP方法(get_css()),其他目标目录和相同目录中的其他文件,它返回这些文件的内容没有问题.
CSS文件的权限没问题:
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
Run Code Online (Sandbox Code Playgroud)
一个单独的PHP脚本,从命令行运行返回内容:
<?php
echo file_get_contents("/var/www/sites/public/css/main.css");
?>
Run Code Online (Sandbox Code Playgroud)
这是前几行 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;
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?它是否有任何理由(我现在看不到)因为它不喜欢CSS文件的内容?
知道了,其中两个文件不是utf-8,并且json_encode()在非utf-8内容上窒息,并且返回null,问题不在File::get(),但是在json_encode().
案件结案!
| 归档时间: |
|
| 查看次数: |
8440 次 |
| 最近记录: |