0

Ubuntuサーバーでコマンドラインからphpファイルを実行しようとしています(最終的にはcronジョブに入れたいです)。コマンドを入力しても何も起こらないようです。私はもう試した:

php -f foo.php

php foo.php

私はcliをインストールしており、foo.phpは実行可能に設定されています。

スクリプトは、データベースにまだアクセスできるかどうかをテストし、結果を電子メールで送信する必要があります。Webブラウザからアクセスすると正常に動作します。

私が間違っていることについて何か考えはありますか?

編集:

php -v からの出力

Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH

編集: スクリプト:

    <?php


require_once __DIR__.'/../Classes/DBConnection.php';
require_once __DIR__.'/../Classes/Mail.php';

$dbSlave = DBConnection::getSlaveDB();
$db = DBConnection::getDB();

$unique = uniqid();
try{
    $query = 'INSERT INTO tblzzTestSlave (token) VALUES (:token)';
    $statement = $db->prepare($query);
    $statement->bindValue(':token', $unique);
    $statement->execute();

    $slaveQuery = "SELECT id FROM tblzzTestSlave WHERE token=:token";
    $slave = $dbSlave->prepare($slaveQuery);
    $slave->bindValue(':token', $unique);
    $slave->execute();
    $result = $slave->fetch();

}catch (Exception $e){
    $result = null;

}

if(!$result){
    Mail::smtpMailer('email', 'email', 'from','Slave Not Working', 'The Slave has stopped       working');
}
4

2 に答える 2

0

私は愚かでした。この行:

require_once __DIR__.'/../Classes/Mail.php';

メールには、セッション Cookie をチェックしようとした別のファイルが必要でした。コマンドラインから実行していたので、もちろん持っていませんでした。これがブラウザで機能した理由です(私はサインインしていました)。セッション Cookie がない場合、サインイン ページにリダイレクトしようとしますが、明らかに CL からは機能しません。

于 2013-03-16T19:54:43.113 に答える
0

PHP が正しい構成ファイルを使用しているかどうかを確認できます。

これは、コマンド ラインとサーバー環境での実行では異なる場合があります。

これを入力して、使用する構成を確認します。

php --ini
于 2013-03-14T16:09:16.907 に答える