🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

2回答

1579閲覧

XAMPPでSmarty3のwebサーバーに書き込み権限を与えるには

k_torino

総合スコア5

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2019/10/15 20:31

XAMPPでSmarty3のwebサーバーに書き込み権限を与えるには

macOS MojaveでXAMPPを使っています。
smarty3を導入したのですが、htdocsディレクトリ以下にtemplates、templates_c、cache、configsディレクトリを作り、PHPにてコードを書いたのですが、コンパイルの時点で弾かれてしまいます。webサーバーに書き込み権限を与えるといいというところまで辿りつきましたが、XAMPP上ではどこをいじれば権限を与えることになるでしょうか。
「Webとプログラミングのきほんのきほん」という本の中のコードなのですが、なぜかエラーが出てしまいます。

発生している問題・エラーメッセージ

Fatal error: Uncaught --> Smarty: unable to write file /opt/lampp/htdocs/templates_c/wrt5da62515d2fa90_11555665 <-- thrown in /opt/lampp/htdocs/libs/sysplugins/smarty_internal_runtime_writefile.php on line 60

該当のソースコード

PHP

1<?php 2 require_once('libs/Smarty.class.php'); 3 4 5 $smarty = new Smarty(); 6 $smarty->template_dir = 'templates/'; 7 $smarty->compile_dir = 'templates_c/'; 8 $smarty->config_dir = 'configs/'; 9 $smarty->cache_dir = 'cache/'; 10 11 12 $a = array ( "リンゴ", "バナナ", 13 "ミカン", "ジャガイモ", "トマト"); 14 $smarty->assign("items", $a); 15 16 17 $smarty->display("example6-3-2.tpl"); 18?>

またテンプレートは下記です。

<html> <body> <table border='1'> {foreach from=$items item=val} <tr><td>{$val}</td></tr> {/foreach} </table> </table> </body> </html>

試したこと

PHPコードの中に「$smarty->testInstall();」を書いてみて、以下の結果が得られました。

Smartyインストールテスト...
テンプレートディレクトリをテストしています...
/ opt / lampp / htdocs / templatesは問題ありません。
コンパイルディレクトリをテストしています...
失敗:/ opt / lampp / htdocs / templates_cは書き込み不可です。
プラグインディレクトリをテストしています...
/ opt / lampp / htdocs / libs / pluginsは問題ありません。
キャッシュディレクトリをテストしています...
失敗:/ opt / lampp / htdocs / cacheは書き込み不可です。
configsディレクトリをテストしています...
/ opt / lampp / htdocs / configs /はOKです。
syspluginファイルをテストしています...
... OK
プラグインファイルをテストしています...
... OK
テストが完了しました。

補足情報(FW/ツールのバージョンなど)

XAMPP7.3.10(PHP 7.3.10)、smarty3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

bash

1sudo chmod +w /opt/lampp/htdocs/templates_c

投稿2019/10/16 06:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k_torino

2019/10/16 10:19

ご回答いただき、ありがとうございます。 パスはこのように指定するといいのですね! 不勉強により、申し訳ありません。 早速このコマンドを試してみました。 ただ、結果が sudo chmod +w / opt / lampp / htdocs / templates_c chmod: cannot access 'opt': No such file or directory chmod: cannot access 'lampp': No such file or directory chmod: cannot access 'htdocs': No such file or directory chmod: cannot access 'templates_c': No such file or directory と出てしまいました…。 申し訳ありません。 管理者権限も調べてみたのですが 権限も自分のものになっていました。 ご回答いただき、ありがとうございました。
退会済みユーザー

退会済みユーザー

2019/10/16 10:27

「sudo chmod +w / opt / lampp / htdocs / templates_c」<ーなんでスペースいれた?
k_torino

2019/10/16 10:33

すみません、スペースなしですと sudo chmod +w /opt/lampp/htdocs/templates_c root@debian:~# のように、特に変化がなくてですね また、phpも変化が起きなかったので、スペースを 入れてしまいました。
退会済みユーザー

退会済みユーザー

2019/10/16 10:38

このコマンドは特に結果を返しません。
退会済みユーザー

退会済みユーザー

2019/10/16 10:39

ls -al /opt/lampp/htdocs/templates_c で書き込み権限が変わったかどうかを確認するものです。
退会済みユーザー

退会済みユーザー

2019/10/16 10:40

とりあえず、現状どうなっているのかを確認するので、 ls -al /opt/lampp/htdocs/templates_c の結果を貼っておくれ。
k_torino

2019/10/16 11:12

すみません、返答が遅くなりました! drwxr-xr-x 2 bitnami bitnami 4096 Oct 15 11:22 . drwxr-xr-x 11 bitnami root 4096 Oct 16 03:53 .. このような結果が出ました。
退会済みユーザー

退会済みユーザー

2019/10/16 12:07

ま、いいか、ローカルだしってことで。 ``` sudo chmod 777 /opt/lampp/htdocs/templates_c ``` でできると思いますよ。
k_torino

2019/10/16 12:12

ご回答いただき、ありがとうございます! できました! 何度もやり取りをしていただき、本当にありがとうございました。 もっと勉強いたします。わからないことの多い人間と やり取りしていただき、感謝です。
guest

0

書き込み権限の変更はOS側の操作で行います。
Macターミナルコマンド「chmod」の使い方

投稿2019/10/15 22:19

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k_torino

2019/10/16 04:26

ご回答をいただき、ありがとうございます。 記載していただいたターミナルの記事は、大変勉強になりました。 ここで色々試してみました。再度の質問は大変恐縮ですが XAMPPのターミナルで試してみた結果 chmod go+w templates_c chmod: cannot access 'templates_c': No such file or directory と出てきてしまい、PHP上でも <?php // 所有者に全ての権限を与え、その他には読み込みと実行を許可する。 chmod("/templates_c/", 0755); ?> とやってみたのですが、 Warning: chmod(): No such file or directory in /opt/lampp/htdocs/permission.php on line 4 と出てしまいました。 他にも chmod 755 example6-3-2.php chmod: cannot access 'example6-3-2.php': No such file or directory や chmod go=w example6-3-2.tpl chmod: cannot access 'example6-3-2.tpl': No such file or directory と出てきます。 「アクセスできない」のが、なぜなのかわからないままです。 大変申し訳ありません、何かご一案ありましたら ご教授お願いいたします。
k_torino

2019/10/16 04:34

何度も失礼いたします。 ターミナルで、 ls -l total 4 ---------- 1 root root 25 Jan 1 1970 bitnami-first-boot-123456 このような結果が出たのですが、root権限なのですが 全てに許可が出ていない状態でした…。 何卒、よろしくお願いいたします。
m.ts10806

2019/10/16 05:31

mac所有者ではないので詳しくはないですが、操作されているアカウントは管理者権限があるユーザーでしょうか? はじめの2つはパスが間違ってるかそもそも存在してないように思います。 あとMacならXAMPPよりMAMPのほうがトラブルが少ないと思います。別件ですが、XAMPPからMAMPに切り替えたら進んだという質問者もいました
k_torino

2019/10/16 06:53

ご回答いただき、ありがとうございます。 何度も質問してしまい、大変申し訳ございません。 管理者権限がある、と思います。自分のマシンなので。。。 すみません!パスが間違えているのですね…。 そして、やはりmacですとMAMPの方がいいのかもしれないですね。 ご意見をありがとうございます。 この度は、ご回答をいただき ありがとうございました。
m.ts10806

2019/10/16 06:55

一応、管理者アカウントかどうかは確認しておいてください(確認方法はすぐに検索で見つけられます)
k_torino

2019/10/16 08:31

ありがとうございます。 そうですね。管理者アカウントかどうか、調べてみたところ 一応管理者になっていました。 他に原因があるかもしれませんので、また調べてみます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問