質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

469閲覧

iniを書く機能がない理由

animeing

総合スコア136

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2022/07/08 10:59

疑問に思った理由
PHPのプロジェクトにて設定値をiniファイル(PHP.iniではない)に持つことにしました。
iniファイルの読み込みに関してはPHPに用意された関数で行えたのですが
逆に書き込む機能がないことに気づきました。
調べてみたのですが、調べ方が悪いのかこのことについて説明している情報を得ることができませんでした。

疑問
そこで疑問なのですが、なぜPHPにはiniファイルを読む関数はあるのに書く機能がないのか教えていただきたく思います。

懸念
iniファイルを書く関数が用意されてない理由がセキュリティ面での問題なのか
もしくは、iniファイルは手作業で書き換える想定だったからなのか
もっと別の理由があるのか

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

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

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

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

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

guest

回答2

0

ベストアンサー

iniファイルは簡単なフォーマットのテキストでしかないので
ドキュメントのコメントにあるput_ini_file()みたいに自分で作ればいいだけ。
https://www.php.net/manual/ja/function.parse-ini-file.php

最大の理由は需要がないだけ。iniなんて古いフレームワークでしか使ったことない。
設定ファイルならjsonやphpファイルのほうが読み書きしやすい。

フレームワークもないような昔や入門レベルの場合、ドキュメントルートにindex.phpと設定ファイルを置く。
設定ファイルがテキストな場合、外部から直接表示できる脆弱性がよくあった。
設定ファイルがphpなら少なくとも中身の表示はできないから少しは安全。
今はそもそもドキュメントルートに置かないのが当たり前。
これが分かってない初心者がいるので今でも/.envを読み取ろうとしてる攻撃は多い。

投稿2022/07/08 14:00

kawax

総合スコア10377

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

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

animeing

2022/07/12 14:11

iniを書く関数が無い最大の理由が需要がないとのことで、確かに jsonであればバックエンドからフロントエンドへの情報の受け渡しなどで用いられるため、 jsonに比べてiniに需要が無いのは分かる気がします。 ただ、それであればiniファイルの読み込みを行う関数だけ存在する理由については少し疑問が残りますが、 懸念点については解決しました。
guest

0

そもそも大抵の言語で設定ファイル専用の書き込み機能なんてないのでは?
設定ファイルなので編集したらアプリケーションなりサーバーの再起動が必要なもののはずです。
再起動しないと反映されないのでアプリケーションから書き換える意味が皆無です。

アプリケーションから書き換えができたら、製造者の意図しない変更が起こる可能性もあります。
もちろんfile_put_contents()などで指定すればファイル自体を作ったり内容を編集することはできるでしょうけど、最大限留意する必要はあります。

そもそも設定ファイルはそれらを読み込んでアプリケーションが動作するので、アプリケーションから書き込むのは本末転倒に思います。

投稿2022/07/08 12:44

編集2022/07/08 12:49
m.ts10806

総合スコア80850

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

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

animeing

2022/07/12 14:18

iniファイルはinitializationの略というのを知りました。 確かにinitializationの略でiniファイルが存在するのであれば 設定ファイルを読み込む前に書き込めるのは不自然なため そもそもiniファイルの意図とズレるのかなと思いました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問