PHPでのサーバー内へのXML保存について

このQ&Aのポイント
  • PHPでDomDocumentでXMLを作成し、保存する方法について調査しています。
  • 保存したいXMLファイルの拡張子を指定すると保存されない問題が発生しています。
  • サーバー側の設定や.htaccessファイルに関連する可能性があるのか、解決策を探しています。
回答を見る
  • ベストアンサー

PHPでのサーバー内へのXML保存について

現在、テスト用サーバーで作成、動作確認を行ったプログラムをレンタルサーバーに移行しているのですが その過程で、分からない事が発生したので質問させていただきます。 PHPでDomDocumentでXMLを作成し、$dom->save("aaa.xml")と保存したいのですが 上記内容を実行すると、ファイルが保存されません。 パーミッションの設定も問題なく、上記内容をチェックしてもエラーも返らないで書き込んだバイト数を返してきます。 プログラム上は、XMLの作成、保存はうまく言っているようなのですが・・・ 試しに、拡張子をxmlでは無く、$dom->save("aaa.php")と変更するとちゃんと保存されます。 という事は、やはり保存はうまく言ってるはずだと思うのですが・・・ FTPからは、拡張子がxmlでもアップロードできます。 PHPからは拡張子をphpにすると大丈夫だったので試しにtxtにもしてみましたが、txtは保存出来ませんでした。 これは、サーバー側の設定でしょうか? もしそうだとすると、.htaccessで設定可能でしょうか?(.htaccessでの設定をどこまで許可してるかにもよると思いますが・・) 可能な場合は、設定名というか項目名は何になるのでしょうか? 管理会社では特になにか制限はしていないとの事ですが、何が考えられますでしょうか? 以上、どなたか分かる方がいらっしゃったら、ご回答お願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ecaih
  • ベストアンサー率48% (16/33)
回答No.1

パーミッションの設定かもと思ったのですが、.phpの拡張子なら保存出来るとの事ですので、違うようですね。 一度、普通に「fwrite()関数」などを使って、xmlやtxtなどの拡張子が保存出来るか試してみたらどうでしょう。

pandarmen
質問者

お礼

$dom->save("aaa.xml")で保存出来ない理由は不明ですが 一度テキストにしてから以下の方法で保存したらうまくいきました。 $text = $dom->saveXML(); $fp = fopen('aaa.xml','w'); flock($fp, LOCK_EX); fwrite($fp,$text); fclose($fp); ありがとうございました。

pandarmen
質問者

補足

fwriteで適当な文字列を保存して試したところ 拡張子xmlでも問題なく保存できました・・・ $dom->saveXML()でブラウザには正常に表示することは出来るのでDomDocumentの内容も問題ないと思うのですが・・・ これは、普通に文字列でXMLを構成して、fwriteで保存するしかないですかね?

関連するQ&A

  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • ハッスルサーバー PHP4 PHP5

    .htaccessというファイルを作成し  AddHandler x-httpd-php5 .php という記述を追加することにより、PHP5の利用が可能にる。 というメールをハッスルサーバーから頂いて、早速そのように設定したところ、拡張子phpのページをクリックすると、phpファイルをダウンローロしようとする画面が出てくるようになりました。 .htaccessファイルを削除しても、phpファイルをダウンローロしようとする画面は消えません。 どのように設定すれば、以前のように普通にPHPページを閲覧できるようにできますか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • XML DOM XMLパーサーについて理解していません

    XMLについてイマイチ理解していないので教えてください。PHPでXMLファイルを開いて何らかの処理をするとします。例えば <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("docs/td101.xml") //要素"b"を取得する $bElement = $doc->getElementsByTagName("b")->item(0); //取得した要素"b"に属性"ad"を設定する $bElement->setAttribute("ad","Fukuoka"); //ドキュメントをシリアライズする $doc->save("docs/result101.xml"); ?> のようにXMLファイルに属性を追加するという処理を行うとします。この時、DOMはPHPによって生成されるんでしょうか?またXMLはXMLパーサーによって解析されると本で読んだのですが、この場合PHPがXMLパーサーの機能を持っているんでしょうか?それともブラウザにXMLパーサーの機能があり、ブラウザ側で処理をされているのでしょうか?意味がわからなくて申し訳ないですが、この辺りを理解していなくて・・・御願いいたします。

    • ベストアンサー
    • XML
  • phpの情報をxmlで保存

    こんにちは、PHP初心者です。 質問なのですが、たとえばPHPによって作成されたWebページで、入力フォームがあるとします。その入力されたフォームの情報をXMLで保存したいのですが、どのような方法があるでしょうか。 また逆に、XMLで保存された情報(数値など)を参照し、Web上のそれぞれのフォームに入力できる方法はどのようにすれば良いのでしょうか。  SimpleXMLなど調べているのですがどうもわかりません。知識不足ですみません、よろしくお願いします。

  • レンタルサーバでPHPの実装ができません

    初めて質問させていただきます。 今回質問させて頂きたい内容ですが 先日借りた「CPI」というレンタルサーバでPHPプログラムを動作させたく ルートフォルダ直下にhtmlフォルダを作成し、そこに「.htaccess」を設置しました。 そして、同フォルダ内にテスト用に「test.php」を設置したのですが、そのURLにアクセスしても 「このファイルを開くか、または保存しますか?」 と開く、または保存しようとするだけで、プログラムに記述した内容が表示されません。 とても狭い範囲の質問で申し訳ありませんが、なにとぞお応えしていただけます様よろしくお願いいたします。 -------------フォルダ階層----------- /(ルート)---+         +--html---+                 +-- .htaccess                 +-- test.php ----------------------------------- ----------.htaccessの内容----------- AddHandler x-httpd-php4311 .php ----------------------------------- 私のPCのphpバージョン : 4.3.5.5 (調度よいバージョンがダウンロードできませんでした) ----------test.phpの内容------------ <?php print"テスト"; ?> -----------------------------------

    • ベストアンサー
    • PHP
  • xml-dom、xslt が使えないサーバで、何とかしてCMSDesignerを動かしたい

    CMSDesignerというCMSツールを、私が今使っているレンタルサーバに導入を検討しており、利用可否をサーバ会社に問合せたのですが、xml-dom、xsltライブラリがサポートされていない為、利用できないと回答ありました。 CMSDesignerの供給元からも、CMSDesignerは、xml-dom、xsltライブラリが必須の為、私のサーバでは使えないと回答されたのですが、xml-dom、xsltライブラリをインストールせずに、何とかして動かす方法があればチャレンジしたいのです。ただ、知識も知恵もなく、全く良い案が浮かびません。 そこで、百戦錬磨のphpのプロの方々、何か良い方法があれば、ご教授ください。 よろしくお願いいたします。

  • FireFoxにてPHPで生成したをXML表示するには?

    PHPにてXML文書を生成して、それをXMLデータを読み取るFlashにデータを渡す処理を作成しました。 そこで、作成されるXML文書を確認するため、 IE7にて、http://hoge.ne.jp/xml.phpと入力してXMLのツリー上になっていることを確認しました。 ですが、ブラウザをFireFoxに切り替えたら文字化けされた(?)文書が表示されるのみです。 ためしに生成されたソースをそのまま、サーバに上げたらツリーが表示されました。 FireFoxでもIEと同様にXMLをツリー形式で見るにはどのようにしたらいいのでしょうか? 出来るなら、ブラウザ関係なく見れるのが好ましいですが、 最低限FireFoxだけでもいいので表示したいと思っています。 わかる方がおられたらご教示ください。 以上、よろしくお願いします。

  • <a href="aaa.php" で、aaa.php が表示されない

    いつもお世話になります。 winxpで、XAMPを使用してlocalhostへ、phpファイルを作成し、phpを学習し始めた初心者です。 同じフォルダにaaa.html、aaa.phpを保存しています。 aaa.htmlで、 <a href="aaa.php>aaa.php</a> とすると、aaa.phpが表示されず 「このファイルを保存しますか?・・・」 と、なってしまいます。 契約しているサーバへULすると、aaa.phpが表示されます。 xampの設定が足りないのではないかと思うのですが、わかりません。 どなたかおわかりの方よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでのXML操作について

    お世話になります。 PHPを少し触れる程度の初心者です。 現在PHPで既存のXMLファイルへの書き込み・削除などの編集が出来ないかと方法を探っているのですが、DOMを使うやXpathを使う、他にも色々と書かれていて少々混乱気味です。 PHP5だけで、例えば以下の様な事は可能なのでしょうか? (1) <?xml version='1.0'?> <DataSet>  <Table>   <name>○○○</name>   <auther>×××</auther>  </Table> </DataSet> というXMLファイルがあった場合、 (2) <?xml version='1.0'?> <DataSet>  <Table>   <name>○○○</name>   <auther>×××</auther>  </Table>  <Table>   <name>△△△</name>   <auther>×××</auther>  </Table> </DataSet> という様な追加。 そして再び元の(1)へ戻す様な削除です。 PHPだけでは不可能である場合、一番分かり易く簡単だと思われる方法を、どなたか分かり易くご教授願えないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPをHTMLで出力したい。

    PHPを使い、 仮にaaa.htmlの中にbbb.htmlというデータをインクルードして、 aaa.phpではなく、aaa.htmlとして出力したいのですが、うまくいきません。 .htaccessを 調べたらよく出てくる AddType application/x-httpd-php html を入れて 同じ階層にアップしてもうまくいきません。 具体的にどうなるかというと、~~/aaa.htmlと打つ(URL欄に)とダウンロードになってしまいます。(ページのaaa.htmlをデータをダウンロード) ブラウザはサファリです。 これはaaa.htmlのデータをxhtmlと宣言しているからでしょうか? AddType application/xhtml+xml html もいれて AddType application/xhtml+xml html AddType application/x-httpd-php html ともしてみたのですが、結果は同じです。 ちなみにaaa.phpでは問題なく表示されます。 レンタルサーバーでもphpは対応しています。 AddType application/xhtml+xml html AddType application/x-httpd-php html (改行) でもダメです、調べた限りをつくしました。。 解決策の程、宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう