2011-09-09 65 views
1

从Windows迁移的PHP文件到Linux(CentOS的),我开始下列权限错误后:Smarty的compile_dir编译权限被拒绝

ERRNO: 2 
TEXT: rename(/tmp/wrtwetuti,/var/www/site1/presentation//compile_dir/ee63ba1108c61f830b5d6155f21b1bcd04684f7e.file.category.tpl.php): Permission denied 
LOCATION: /var/www/site1/libs/smarty_3/sysplugins/smarty_internal_write_file.php, line 48, at September 9, 2011, 4:05 am 

当用于测试目的chmoded compile_dir编译为777,问题消失。

我想知道是否有人知道它的解决方案。 安装suPHP会解决这个问题吗?

回答

3

compile_dir假设可以由网络服务器(也可以在您的web根目录之外)写入。所以,你应该:

  • 将其移出Web根的
  • 所有权分配给网络服务器用户
  • 执行命令chmod 700

事实上,在你的Windows安装默认compile_dir也可以通过Web服务器写入该操作系统的典型代码,并不意味着Linux上需要修复某些内容。

+0

为什么我需要将其移出web根目录? –

+0

@Eugene:原则上,因为文档建议。作为一个实际问题,因为如果你不这样做,除非你的web服务器专门配置为禁止它,否则互联网上的任何人都可能能够获得你编译的Smarty模板。这将允许他们了解有关您的代码的内容,而您可能不想让他们知道这些内容。 – Jon

+0

谢谢!因此,将/ var/www/site1/presentation/compile_dir /中的compile_dir移动到/ var/compile_dir /会执行什么操作? –

2

你可以看看这个页面:http://www.smarty.net/docs/en/installing.smarty.basic.tpl “Smarty的需要写访问(Windows用户请无视)到$ compile_dir编译和$ cache_dir的目录(templates_c /和缓存/),所以一定要在Web服务器用户帐户可以写给他们“。

希望这有助于。

+0

谢谢你的帮忙! –