※ ChatGPTを利用し、要約された質問です(原文:PHPでのサーバー内へのXML保存について)
PHPでのサーバー内へのXML保存について
このQ&Aのポイント
PHPでDomDocumentでXMLを作成し、保存する方法について調査しています。
保存したいXMLファイルの拡張子を指定すると保存されない問題が発生しています。
サーバー側の設定や.htaccessファイルに関連する可能性があるのか、解決策を探しています。
現在、テスト用サーバーで作成、動作確認を行ったプログラムをレンタルサーバーに移行しているのですが
その過程で、分からない事が発生したので質問させていただきます。
PHPでDomDocumentでXMLを作成し、$dom->save("aaa.xml")と保存したいのですが
上記内容を実行すると、ファイルが保存されません。
パーミッションの設定も問題なく、上記内容をチェックしてもエラーも返らないで書き込んだバイト数を返してきます。
プログラム上は、XMLの作成、保存はうまく言っているようなのですが・・・
試しに、拡張子をxmlでは無く、$dom->save("aaa.php")と変更するとちゃんと保存されます。
という事は、やはり保存はうまく言ってるはずだと思うのですが・・・
FTPからは、拡張子がxmlでもアップロードできます。
PHPからは拡張子をphpにすると大丈夫だったので試しにtxtにもしてみましたが、txtは保存出来ませんでした。
これは、サーバー側の設定でしょうか?
もしそうだとすると、.htaccessで設定可能でしょうか?(.htaccessでの設定をどこまで許可してるかにもよると思いますが・・)
可能な場合は、設定名というか項目名は何になるのでしょうか?
管理会社では特になにか制限はしていないとの事ですが、何が考えられますでしょうか?
以上、どなたか分かる方がいらっしゃったら、ご回答お願いいたします。
お礼
$dom->save("aaa.xml")で保存出来ない理由は不明ですが 一度テキストにしてから以下の方法で保存したらうまくいきました。 $text = $dom->saveXML(); $fp = fopen('aaa.xml','w'); flock($fp, LOCK_EX); fwrite($fp,$text); fclose($fp); ありがとうございました。
補足
fwriteで適当な文字列を保存して試したところ 拡張子xmlでも問題なく保存できました・・・ $dom->saveXML()でブラウザには正常に表示することは出来るのでDomDocumentの内容も問題ないと思うのですが・・・ これは、普通に文字列でXMLを構成して、fwriteで保存するしかないですかね?