サンプル スクリプトを実行していて、この特定の問題にヒットしました。
スクリプトは設定から始まります
$docroot=$_SERVER['DOCUMENT_ROOT'];
ファイルへの書き込みについては、
@$fp = fopen("$docroot/../parts/partsorders.txt",'ab');
使用されている。しかし、何があっても、これはファイルへの書き込みに失敗します。
しばらくいじった後、コマンドを
@$fp = fopen('$docroot/../parts/partsorders.txt','ab');
二重引用符の代わりに単一引用符を使用すると、うまくいきました!
私の質問は、単一引用符の代わりに機能するはずの以前の二重引用符形式ではないということです。ここで何が起きてるの ?
これはコードを簡略化したものです (ファイルがサーバーに存在すると仮定します)。
<?php
$docroot=$_SERVER['DOCUMENT_ROOT'];
$outputstring = "herpderp";
?>
<html>
<head>
<title>Quotes</title>
</head>
<body>
<?php
@$fp=fopen("$docroot/../parts/partsorders.txt","ab");
flock($fp, LOCK_EX);
if(!$fp) {
echo "<p><strong>Failed.</strong></p></body></html>";
exit;
}
fwrite($fp,$outputstring,strlen($outputstring));
flock($fp,LOCK_UN);
fclose($fp);
echo "<p>Order written.</p>";
?>
</body>
</html>