PHPの質問です

http://q.hatena.ne.jp/1365606294 と②http://q.hatena.ne.jp/1365546701 の質問の続きです
①と②を合体させたいとおもい、以下のgattai.phpプログラムを実行したのですが
思い通りに差分ファイルが作成されませんでした
①だけのphp ②だけのphp を実行した場合はうまく動作ました。
gattai.phpを実行した後、いろいろいじっている間にFFFTPでnew.txtをアップロードしようとしたら
550 /public_html/~/new.txt: Permission denied
と出たので、もしかしたらnew.txtに読み取り禁止のロックがかかっている可能性があるのではと思っています。
どうすればきちんと差分ファイルを作成できるでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/04/12 02:39:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:takanii

gattai.php

<?php
mb_internal_encoding("utf-8");
$filename = "new.txt";
$url = "http://headlines.yahoo.co.jp/hl";
$str = file_get_contents($url);
$str = mb_convert_encoding($str, "utf-8", "auto");
preg_match("/<head>(.+?)<\/head>/ismu", $str, $arr);
$sSearch = array();
$sSearch[0] = "<script type=\"text/javascript\">\n";  //ダブルクォーテーション
$sSearch[1] = "/^<meta.*\n/mu";            //正規表現;
$sReplace = array();
$sReplace[0] = '';
$sReplace[1] = '';
$sResult = str_replace($sSearch[0], $sReplace[0], $arr[1]);
$sResult = preg_replace($sSearch[1], $sReplace[1], $sResult);
file_put_contents($filename, $sResult);

$file_new = file("new.txt", FILE_IGNORE_NEW_LINES);
$file_old = file("old.txt", FILE_IGNORE_NEW_LINES);
$result = array();
foreach ($file_new as $line) {
  if (!in_array($line, $file_old)) {
    array_push($result, $line);
  }
}
file_put_contents("diff.txt", join("\n", $result));
?>

回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

http://siriasu.s10.xrea.com/ffftp/ffftp.htm

ffftpで属性を変更してください。

フォルダに入れてるならば それも。
あと そのphpのファイルも とりあえず 777にしてください。




全部チェックすれば 777です。

<?php
mb_language("Japanese");
mb_internal_encoding("utf-8");

一行目に
mb_language("Japanese");
を追加してください。

id:takanii

言われたとおりに一行目に追加して属性変更をしてやりましたが、できませんでした
サーバーは coreserverを使っています
new.txtの属性が644になっていたので属性変更しようとしましたが、属性変更できませんでした

2013/04/11 23:32:29
  • id:tezcello
    > new.txtの属性が644になっていたので属性変更しようとしましたが、属性変更できませんでした
    スクリプトから新しくファイルを作った場合は、ファイルのオーナーが apache や nobody などになる事が多いです(環境依存)
    そういう時は同じスクリプト中で chmod() か chown() などしておかないと、FTP 等で接続すると扱い難いものになってしまいます。
    __別のスクリプトで、該当のファイルのパーミッションやオーナーを変更するのも可です


    > きゃづみぃ さん
    大方の場合、PHPスクリプトには実行権限は不要だと思います。(当然ながら環境依存)
    更に、mb_language() の指定は mb_send_mail() の使用時しか使われないのでは?
  • id:taknt
    mb_language()がないと エラーになる場合もあるが原因は別のところだろうね。

    どうやって old.txtを作ったのか?というのが キーになると思う。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません