サーバー移転をしたところfopenの際エラーを吐き出すようになってしまったのですがなぜでしょうか?


【移転前のphpバージョン】=>5.1.6

【移転後のphpバージョン】=>5.3.6

エラー内容:
Warning: fopen(http:/*****): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error in /var/www/html/*****/test.php on line 12

ちなみにtest.phpの12行目は
$fq = fopen($url, "r") or die("error !!");

としています。


またphpでこれまで「<?」と省略して書きだしていたものが「<?php」と書かないと動作しなくなってしまったのはなぜでしょうか?

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/08/14 20:27:04

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

バージョンの違いではなく、サーバー管理者の意向によって設定が異なるだけの話です

サーバーによっては設定を独自に変更できる場合もありますが、まったくもって受け付けてもらえない場合もありますので、まずは新しいサーバーの管理者(社)に相談してみないことには先には進めないでしょう

 

以下に、設定に関するマニュアルページと新しいほうのサーバーがどうして今のような状態なのかについての理由を示しておきますので、独自に設定を行う場合にはそれぞれ参照し、よくよく検討の上で設定するようにしてください

(1)fopenでURL使用の許可に関するキーワード:php.iniのallow_url_fopen

外部へのアクセスを制限することでサーバー負荷を抑えたり、他のサーバーへの攻撃の足がかりにされたりすることを防ぐなどの理由で許可していない場合も多い

http://www.php.net/manual/ja/features.remote-files.php

http://www.php.net/manual/ja/filesystem.configuration.php#ini.allow-url-fopen

fopen でURLの利用が禁じられている場合の対処法は特に無いので、サーバー移転前に確認しておくべき事項の1つとも言えます

 

(2)短縮タグ(<?)の許可に関するキーワード:short_open_tag

短縮タグではXML文書のようなものまでphpだと間違って認識してしまうため、短縮タグを禁じているサーバーは多い

http://php.net/manual/ja/ini.core.php

  • id:ymch
    fopenの件ですが…

    PHPの設定変更権限がないのでしたら、cURLを使って回避しましょう。
    http://php.net/manual/ja/curl.examples-basic.php

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

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

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

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