0

現在、xml ファイルを作成する PHP スクリプトに取り組んでいます。ブラウザでスクリプトを実行すると、書き出されません。シェルコマンド「php /filelocation」を使用すると、問題なく動作します。どうしてこれなの?

<?php
include('parse.php');

$test;

$test[0] = "Name:Actinium";
$test[1] = "Symbol:Ac";
$test[2] = "Atomic number:89";
$test[3] = "Atomic weight:[227]";

xml_write($test);
?>

<?php
function xml_write($s)
{
  $temp = explode(":",$s[0]);
  $data;
  $count = 0;

  for($i = 0;$i< sizeof($s);$i++)
    {
      $temp = explode(":",$s[$i]);
      $data[$count] = $temp[1];
      $count++; 

    }
  //creates the root element
  $xml = new DOMDocument("1.0");
  $root = $xml->createElement("table");
  $xml->appendChild($root);

  //creates name element
  $name = $xml->createElement("name");
  $nameText = $xml->createTextNode($data[0]);
  $name->appendChild($nameText);

  //creates symbol element
  $symbol = $xml->createElement("symbol");
  $symbolText= $xml->createTextNode($data[1]);
  $symbol->appendChild($symbolText);

  //creates atomic number element
  $number = $xml->createElement("number");
  $numberText = $xml->createTextNode($data[2]);
  $number->appendChild($numberText);

  //creates atomic mass element
  $mass = $xml->createElement("mass");
  $massText = $xml->createTextNode($data[3]);
  $mass->appendChild($massText);

  //creates "element" element and binds the properties to it
  $ele = $xml->createElement("element");
  $ele->appendChild($name);
  $ele->appendChild($symbol);
  $ele->appendChild($number);
  $ele->appendChild($mass);

  //attaches ele to root
  $root->appendChild($ele);

  $xml->formatOutput = true;
  echo "<xmp>".$xml->saveXML()."</xmp>";

  $xml->save("/home/anthony/database/table.xml") or die("Error");
}
4

2 に答える 2

0

を介して「application/xml」などのコンテンツ タイプを設定していない場合header()、ブラウザは xml を html としてレンダリングしようとしています...空白のページとして表示されます。ブラウザから「ソースを表示」すると、出力が表示されるはずです。

または、コンテンツ タイプ ヘッダーを設定すると、ブラウザーはそれを XML として表示します。

編集

読み返してみると、間違った解釈をしているかもしれません。私はあなたが単にechoデータを出していると思っていました。Apacheプロセスが実行されている人は誰でもファイルへのアクセス許可を持っていないという上記のコメンターに同意する必要があります。

アクセス許可を除外するには、(ホストによっては) パスを設定して/tmp/table.xml、それが機能するかどうかを確認します。パーミッションの問題を想定すると、apache ユーザー (www-data かな?) には、ファイルに対する rw パーミッションが必要になります。apache が新しいファイルを作成する場合は、親ディレクトリに対する rw パーミッションも必要です。

于 2013-08-07T19:29:51.703 に答える
0

以前にも同様の問題がありました。私の推測では、r/w アクセス許可は所有者にのみ与えられ、_www には与えられないため、シェル コマンドが機能し、ブラウザー アクセスが失敗する可能性があります。可能であれば、それが機能するかどうか試しchmod 666てみてください。

または、Apache の httpd.conf ファイルに移動して、ユーザーを _www からユーザー名に変更することもできます。ただし、多くの潜在的なセキュリティの問題が発生する可能性があるため、これを恒久的な解決策としてはお勧めしません。

于 2013-08-07T19:50:37.610 に答える