ネットが遅くてイライラしてない!?

phpのカテゴリなのか迷いましたが、質問させて下さい。


実行するファイルは、a.php、b.php、c.phpの3ファイルになり、SQL文が記載されています。
この3ファイルを.sh(シェルスクリプト)から実行したいと考えております。
どなたか参考サイトまたは実装方法をご教示頂けないでしょうか。

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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

php a.php


php b.php
php c.php

こんな感じ?

参考URL:http://manual.xwd.jp/features.commandline.html
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

ご教示頂いたやり方で出来ました。ありがとうございました。

お礼日時:2014/05/24 19:50

そのphpファイルはCLIで動くように組んであるのでしょうか?


それともCGIないしモジュールとしてapacheなどで動かす前提でしょうか?

前者なら普通にシェルから呼べるのでphpの実行ファイルに-fオプションなどをつけて
実行すればいいでしょう

http://www.php.net/manual/ja/features.commandlin …

後者であれば、localhostないし所定のURLに対してwgetなどでhttp経由で
実行するのが楽です。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
CLIを初耳でして、すいません何と答えたらいいのやら…。

お礼日時:2014/05/24 19:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシェルコマンドでphpを実行したい!

 さくらインターネットでcron設定を使って月末になると起動するphpを読み込もうとしたいのですが、どうやっても上手くいきません。
いろいろと参考になるサイトはあるのですが、動かない理由がわからないのでどなたか教えてください。

 まず、cron設定で設定しているシェルのファイルが置いてあるパスに間違いはありません。

 次にシェルファイルに書いてあるコードは以下です。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /home/自分のID/www/自分で作ったフォルダ/; ./自分で作ったフォルダ/phpファイル

という風に書いてあります。

ところが、時間になるとこれが実行されず、
サーバーよりエラーメールが届きます。

[not found]と一言。

…最初、シェルファイルの階層が間違っているかと思ったのですが、
どう見てもあってますし…中身が問題なのかなぁ、と考えます。

何かわかれば、是非教えてください。
お願いします。

 さくらインターネットでcron設定を使って月末になると起動するphpを読み込もうとしたいのですが、どうやっても上手くいきません。
いろいろと参考になるサイトはあるのですが、動かない理由がわからないのでどなたか教えてください。

 まず、cron設定で設定しているシェルのファイルが置いてあるパスに間違いはありません。

 次にシェルファイルに書いてあるコードは以下です。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /home/自分のID/www/自分で作ったフォルダ/; ./自...続きを読む

Aベストアンサー

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /home/自分のID/www/自分で作ったフォルダ/
php phpファイル

上記のtypoじゃないすかね。
命令終了はセミコロンじゃないです。
cronでphpファイルを起動させるだけなら別に.shファイル使わなくても
直接crontabにphp起動コードを書けば良いと思いますよ。

0 0 1 * * php /home/自分のID/www/自分で作ったフォルダ/phpファイル


>PATH
php実体へのパスが通っていないパターンを考慮すれば別に記述があっても不自然ではないと思いますが・・・

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QシェルスクリプトからPHP実行

シェルスクリプト(bash)内で、以下のようにPHPを呼んだ場合、
その次の処理がPHPの終了を待たずに実行されるようなのですが、
どうしてでしょうか?

#!\bin\bash

/usr/local/php4/bin/php /home/test.php

echo "test!"
以上

なぜか test! という表示がPHPの処理中に出るように思えます。

Aベストアンサー

>もしかしたらPHPとJavaが並列処理されていてその関係でエラーになっているのかと、、、。

そんなことはないので、原因は別の所にあります。
さまざまな原因が考えられますので、ひとつひとつつぶしていくんでしょうね。

>ちなみに重複するようなデータは入れていません。(これは何度も確認しました)
これが絶対に正しいのであれば、
>insert処理を実行すると、重複エラーになるのです。
このエラーは実際には重複エラーではないのでしょう。Javaプログラムのデバッグですね。

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

QPHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?

PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?
for文やwhile文ではbreakやcontinueなどが使えるようですが、if文にはないのでしょうか?

条件分岐がいくつかあって、その一つを途中で抜けて次の条件分岐へと移行したいのですが、
exitを使ってしまうと、次へ行かずに処理が中止されてしまいますし、
どのようにすればよいのか分からず困っています。何かよい方法はないでしょうか?

Aベストアンサー

例えば「goto 演算子」を使うとかですね。
http://php.net/manual/ja/control-structures.goto.php
(参考URL)

「if文を強制終了」というより「ステップの強制移動」と言った感じです。

ただ、あまりgoto演算子はお勧めできません。
複雑な処理になればなるほど、バグが発生した際にバグ元を発見し難くなります。

本来は細かく制御文を入れていけば、あまり必要ないと思いますが・・・

Qphpでバッチ組めますか?

phpで画面のないアプリケーションを作成し、シェル起動させる事は可能ですか?

やらない方が良いのかもしれませんが既存の資産を利用できるので楽な事もあり問題ないならそうしたいと思います。

バッチでやる事はMYSQLのデータの加工です。

バッチでMYSQLのデータを加工するなら○○を使った方が良いというアドバイスもあればお願いします。


・linux
・php
・mysql

Aベストアンサー

バッチを作ること自体はよくやることですし、問題ないと思います。
ただし、#1さんも書かれている通り、CLI版PHPは、"最近のPHP"から使えるようになりました。

>できたっぽいですが、先にバージョン情報の出力もやってしまう感じです。
>(ワーニングは気にしないとして)これはどうにかなりませんか?
質問者さんの使われているPHPのバージョンが書かれていませんので推測ですが
メッセージから判断するとCLI版ではなく、CGI版のPHPが動作しているように思えます。
詳しくはマニュアル(参考URL)を参照ください。

参考URL:http://www.php.net/manual/ja/features.commandline.php

QPermission denied in

PHPを実行するとWarning: fopen failed to open stream Permission denied inと
表示されてしまいます。
インターネットを使い、調べてはいますが、
上記のように表示してしまいます。
ファイルです。パーミッションは606にしました。

このWarningを表示させないようにするには、どのようにすれば
良いのか教えて頂けると嬉しいです。

Aベストアンサー

あとは
> PHPを実行するユーザーとそのグループはどうなってますか?

PHPを直接コマンドラインから実行するのなら、ユーザーはあなたですが、httpサーバーでモジュールやCGIとして実行するなら別の権限(nobodyとか)になっていると思います。

あとは
ディレクトリのパーミッションを 707 にする
ディレクトリとファイルのオーナーをPHPを実行するユーザーにする
とかでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング