2011-01-03 32 views
6

Smartyが権限について不平を言っています。私は、私が取り組んでいるプロジェクト用の小さなmvcフレームワークを書いたので、各コントローラにテンプレートをレンダリングできる必要があります。私は先に進んでSmartyのインストール手順に従い、自分の「フロントコントローラ」のすべての設定オプション、またはリクエストをアプリケーションの残りの部分にルーティングするページを設定しました。 testinstall関数はすべてが正真正銘であると言いますが、コントローラでテンプレートをレンダリングしようとすると、これで終わります。Smarty権限の問題

警告します。mkdir(): 名前変更(は/ tmp /:行28警告に /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php に権限拒否wrt6piczo、/ templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php):。 ライン上 /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php でそのようなファイルまたはディレクトリ48警告:chmod():No ファイルまたはディレクトリ /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php on line 50警告:そのようなファイルや は/ var/www /のHRTRL /含ん/ CallLog/libに/ Smartyの/ libsに/ syspluginsで ディレクトリ: は、ストリームをオープンに失敗しました: は(./ templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php)が含ま/smarty_internal_template.php 線上423警告:()が挙げられる: 開口失敗 './templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php' 含める(のinclude_path =」のために:を/ usr/share/PHP: /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_template.phpの行には、/ usr/share /ナシ ')423

私は残りのフレームワークを独立してテストしましたが、すべてがうまくいくようです。私の "フロントコントローラー"は要求を適切なコントローラーに正しくルーティングします。通常のHTMLをうまく表示できるようです。

さらに、私は、テストのためだけに、Smartyライブラリのフォルダのすべてと、他の必要なディレクトリを777にchmoddedしました。私はまだ同じ権限エラーを受けています。

EDIT

これらは私が必要なすべてのSmartyのフォルダに使用した設定です。

$smarty->setTemplateDir('lib/smarty/templates'); 
$smarty->setCompileDir('lib/smarty/templates_c'); 
$smarty->setCacheDir('lib/smarty/cache'); 
$smarty->setConfigDir('lib/smarty/configs'); 
+2

なぜあなたはSmartyのを使用しますか? PHP自体を使用するだけではなく(なぜなら、これらの面倒を避けてください) – ircmaxell

+3

最終的な結果はデザイナーに優しいものでなければなりません。私は自分自身ですべての視点をデザインするとは思わないでしょう。 –

+0

smartyのcompile_dirを何に設定しましたか? Webサーバーには書き込み権限がありますか? – James

答えて

4

相対パスに問題がありますか? ****ディレクトリ機能を設定するための完全なパスを追加できますか?正しい場所を使用していることを確認してください。

これを/specialdir/thisdirhasonlyaPHPfile/file.phpの場所から呼び出すと、問題が発生する可能性があります。

-2

index.phpファイルから次の行をコメントするだけです。

これが問題を解決します。

-1

書き込みのアクセス許可を再度確認する必要があります。 私は同じエラーがあったので、私は777に 'templates_c'フォルダとそれの中の何ものにもアクセス権を設定しました。 しかし、私はこの操作をFilezillaで3回繰り返さなければならなかったのですが、なぜパーミッションが一度に変更されなかったのか分かりません。

+1

これは私を助けました。ありがとう! –

5

適切な権限は私のためにそれを解く:

chown -R www-data /var/www/HRTRL 
-1

documentationによると、「template_c」フォルダのパーミッションは775でなければなりません。しかし、それはいつかは動作しません。あなたはその許可を777に設定しなければなりません。

+0

私はなぜあなたのプロジェクトの任意のファイル/フォルダのための最もゆるい権限でなければならないとして775が動作しないと、ドキュメントが775と777ではないと述べています。 –

0

上記のすべての後にSmartyの許可の問題を扱っている他の人(config/chown/chmodの確認など)。SE上でSmartyを実行している間に問題が発生しました(セキュリティ強化された)Linux

コンパイル/キャッシュディレクトリは、〜/ tmpディレクトリ内のサブディレクトリでした。

デフォルトのターゲティングポリシーは、tmpディレクトリへの書き込みを防ぎます。

semanageを使用してコンテキスト/ポリシーを更新できます。 web-appが書き込む必要のあるディレクトリにhttpd_sys_rw_content_tコンテキストを割り当てるための新しいポリシーを作成する必要があります。

詳細情報: http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/ トン