Smarty输出空白的解决

这是去年10月份就遇到的问题,当时偶然解决了,并没有去想为什么会解决,到现在又遇到了。
具体表现:使用的是phrame + Smarty,把所有的页面响应都映射到index.php上去。在浏览器上看页面是一片空白,去年的解决方法是在命令行下使用php index.php,看到输出中有Smarty解析模板生成的HTML代码了,再去浏览器上看,页面正常。

但不能总是用这种方法来“激 活”页面显示。最后仔细调试一下发现问题出在权限上:Smarty编译解析templates目录下的模板文件,生成HTML代码,把生成的代码存储到 templates_c下面,然后就能正常显示。在命令行下运行 php index.php,也只是为了在templates_c下面产生生成的HTML代码,所以运行后就能“激活”显示。在浏览器中无论怎样刷新页面, templates_c下面都不会产生代码,所以显示就是一片空白。
在/etc/httpd/conf/httpd.conf文件中有这一行:
User apache
Group apache
http 服务器进程的uid是apache用户,而我的tempaltes_c目录是whb用户且目录权限是drwxr-xr-x。apache用户对这个目录没 有写权限,因此Smarty虽然解析了模板文件但是写不到templates_c下面去也是徒劳。解决方法就是改变templates_c目录权限使得 apache用户可以写,或者把这个目录的属主变成apache用户。

没有看到问题的本质的时候很多现象都联系不起来很多技术都只能靠死 记硬背,应该坚信技术的出现必然是为了解决问题,不理解这种技术是因为没有看到要解决的问题,而且我们使用的技术必然是当时从众多能够解决问题的方法中选 出来的最简单的那一个,感觉到难或者感觉有矛盾,是因为站的不够高。正如发现了自然数解决不了的问题,说明自然数不够“一般”,必须借助更一般的整数或者 有理数才可能解决这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Smarty 是一种模板引擎,它通常用于将 PHP 代码与 HTML 页面分离,使得代码更加清晰和易于维护。如果你想要修改 Smarty输出方式,可以通过以下几种方式实现: 1. 自定义 Smarty 函数:你可以在自己的 PHP 代码中编写一个 Smarty 函数,然后在模板中调用该函数来实现自定义输出。例如,你可以编写一个输出当前时间的 Smarty 函数: ``` function smarty_function_current_time($params, $smarty) { return date('Y-m-d H:i:s'); } ``` 在模板中可以这样使用: ``` 当前时间:{current_time} ``` 2. 修改 Smarty 的内置函数:如果你想要修改 Smarty 的内置函数的输出方式,可以直接修改 Smarty 的源代码。不过,这种方式不太推荐,因为升级 Smarty 时可能会覆盖你的修改。 3. 使用 Smarty 的插件:Smarty 插件是一种扩展机制,可以让你在模板中使用自定义标签、函数、过滤器等。你可以编写一个插件来修改 Smarty输出方式。例如,你可以编写一个自定义输出标签: ``` class Smarty_Internal_Compile_MyTag extends Smarty_Internal_CompileBase { public function compile($args, $compiler, $parameter) { // 处理参数 $params = $this->getAttributes($compiler, $args); // 返回 PHP 代码,输出自定义的内容 return 'echo "自定义输出内容";'; } } // 注册插件 $smarty->registerPlugin('tag', 'mytag', 'Smarty_Internal_Compile_MyTag'); ``` 在模板中可以这样使用: ``` {mytag} ``` 以上是几种常见的修改 Smarty 输出方式的方法,你可以根据实际需求选择其中一种或多种方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值