外部ファイルの存在の有無を確認するPHP

ドロップシッピングをやっていると、商品写真のリンクが切れていることがたまにあります。
こうなると、せっかく販売のページを作っていても商品写真が無いので、メンテされてないページだとの印象をもたれてしまいます。
こういう時、商品写真のURLが存在しない場合は、表示しないようにしておけば販売のページで、写真部分が歯抜けになることはなくなります。

で、その外部ファイルの存在の有無を確認するために、PHPでそのページが返すヘッダーを取得します。
HTTPステータスコードが200の時は真、それ以外は偽を返す関数を作って、使用した例が下記になります。

※ページのレイアウトが崩れないように、CSSを用いて、画像が無くてもその画像の大きさ分空けておく必要があります。

カテゴリー: PHP | タグ: | コメント (2)

ローカルで複数ドメイン使用

ホームページを作成している方は、サーバーにアップして公開する前に、
自宅パソコンのローカルサーバで確認していると思いますが、
複数のサイトを別のドメインやサブドメインで運用している場合、
ローカルと実際のサーバでルートディレクトリの位置が違ってややこしくなる時があります。

例えば、hoge.example.comとpiyo.example.comで、それぞれサイト運営したとします。
公開サーバでは、hoge.example.comとpiyo.example.comのディレクトリが作られて、
それぞれのディレクトリ直下にindex.htmlを置けばhttp://hoge.example.comとhttp://piyo.example.comで見ることができます。
でも、ローカルで同様なディレクトリ構成にしても、
http://localhost/hoge.example.comとhttp://localhost/piyo.example.comにしないと見ることができません。
だから、別ページにトップページのリンクを張る場合、
公開サーバではリンク先を「/」でリンクできても、ローカルサーバでは「/」ではリンクできず、相対パスやURLで指定しなければなりません。
PHPでヘッダやフッタを共通にしている場合など、ローカルと公開サーバで同じにしようとすると、
URLでリンクを指定するか、if文で条件分岐しなければなりません。

で、ローカルでディレクトリ単位でルート化する方法です。

*環境は、xampp-win32-1.7.2、WindowsXPとします。
*xamppはE:¥xampp下にインストールしているものとします。
*公開フォルダ「htdocs」直下に「hoge.example.com」「piyo.example.com」の2個のフォルダがあり、それぞれをルートディレクトリにしたいとします。

変更するのは次の2個のファイルです。
E:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf
C:¥WINDOWS¥system32¥drivers¥etc¥hosts

1.httpd-vhosts.confファイルの変更

修正部分 ※コメントアウトをはずします。

変更前 ##NameVirtualHost *:80
変更後 NameVirtualHost *:80

以下、最終行以降に追加

<VirtualHost *:80>
DocumentRoot "E:/xampp/htdocs"
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "E:/xampp/htdocs/hoge.example.com"
ServerName hoge.localhost
</VirtualHost>
<Directory "E:/xampp/htdocs/hoge.example.com">
order deny,allow
allow from ALL
</Directory>

<VirtualHost *:80>
DocumentRoot "E:/xampp/htdocs/piyo.example.com"
ServerName piyo.localhost
</VirtualHost>
<Directory "E:/xampp/htdocs/piyo.example.com">
order deny,allow
allow from ALL
</Directory>

2.hostsファイルの変更

以下、追加

127.0.0.1 localhost #この行に下に下記を追加
127.0.0.1 hoge.localhost
127.0.0.1 piyo.localhost

3.Apacheの再起動

xamppの場合、xamppのコントロールパネルで「STOP」「START」でOK。

カテゴリー: レンタルサーバ | タグ: | コメント (1)

海外レンタルサーバWebhostingpadとのやりとり

先日、アメリカのレンタルサーバWebhostingpadにアップしているホームページが見れなくなりました。

FTPでもログインできなくなったので、GoogleやYahoo!の翻訳を駆使しながら下記の内容でメールしました。
ドメイン名hoge.comのホームページが見れなくなり、”Error loading page. Please contact the support team.”と表示されます。
cPanelにもログインできなくなりました。すぐにこれらについて対処してください。
I cannot display a homepage of domain name “hoge.com”.
With “Error loading page. Please contact the support team.”, it is displayed.
Furthermore, I cannot do Login in “cPanel”.
Please cope about these immediately.

で、返ってきた返事は下記の英文です。
Your account has been suspended because your scripts are using overloading the server CPU and Memory.
Your site is going over our allowed CPU usage.
We only allow 10%.
Please detail exactly what your site does and what sort of programs you have installed and running.
君のスクリプトが、サーバーのCPUとメモリーを過負荷に使用してるので、アカウントは凍結されたよ。
君のサイトは、CPUの許容範囲を超えてるんだ。
10%しか許可してないよ。
君のサイトが何をして、どんな種類のプログラムをインストールして実行しているか詳しく説明してね。
見たいな感じだと思います。

うーん、詳しく説明なんて英語でできないので、質問には質問返しで答えました。
返信メールの内容は理解しました。
突然、アカウント凍結されてびっくりしました。
CPUの許容使用率を超えたとき、どのファイルが実行されていたか私に教えてください。
そして、アカウント凍結を解除してください。
なぜなら、cPanelとFTPにアクセスできないからです。
I understood the contents of the reply email.
I am surprised at a sudden account suspended.
Please teach me, which file was run, when the CPU over a specified proportion.
And, please cancel my account suspended.
Because, I can’t access my cPanel and FTP.

で、返事は、
Can you please get back to us with your main domain name? That will help us to assist you more effectively.
君のメインドメイン名を返信することができるか。それは我々がより効果的に手伝いをするのに役立つ。

再度次の内容を送信。
返信メールの内容は理解しました。
突然、アカウント凍結されてびっくりしました。
CPUの許容使用率を超えたとき、どのファイルが実行されていたか私に教えてください。
そして、アカウント凍結を解除してください。
なぜなら、cPanelとFTPにアクセスできないからです。
メインドメイン名:hoge.com
ユーザーネーム:hogehoge
I understood the contents of the reply email.
I am surprised at a sudden account suspended.
Please teach me, which file was run, when the CPU over a specified proportion.
And, please cancel my account suspended.
Because, I can’t access my cPanel and FTP.
my main domein name: hoge.com
my username: hogehoge

で、むこうからの返信。
If you want we can enable the account after disabling the particular file /home/hoge/public_html/hoge/hoge.php.
Let me know if you want me to go ahead with that.
君が望むなら、特定したファイル /home/hoge/public_html/hoge/hoge.php を無効にした後、我々はアカウントを有効にすることができる。
そのように進める必要がある場合、教えてくれよ。

で、こちらからの返信。
返信メールの内容は理解しました。
特定したファイル /home/hoge/public_html/hoge/hoge.php を無効にすることを望みます。
その後で、アカウントの凍結を解除してほしいです。
メインドメイン名:hoge.com
ユーザーネーム:hogehoge
I understood the contents of the reply email.
I hope that you disable the particular file
/home/hoge/public_html/hoge/hoge.php.
Afterwards, I want you to cancel my account suspended.
my main domain name: hoge.com
my user name: hogehoge

で、むこうからの返信。
The script “/hoge/public_html/hoge/hoge.php.” has been disabled and activated the account.
そのスクリプト「/hoge/public_html/hoge/hoge.php.」が無効になっており、アカウントを有効にした。

コレでやっとアカウントが復活したのですが、気持ち悪いので、この際、日本のレンタルサーバに引越ししました。
しかし、こんな適当な英語で理解していただけたことについては、感謝しなければ。
でも、こんなやり取りを英語でするのは、こりごりです。尋ねたことにだけ答えてくれるので、できるだけ先を読んでメールの内容を考えなければ、何度もやり取りすることになります。

カテゴリー: レンタルサーバ | タグ: , | コメント (5)