从Bash

时间:2016-09-07 19:38:28

标签: php bash sh bin

我需要运行一个脚本来执行一个php文件,但是我无法从Bash脚本运行PHP文件

Test.sh:

#!/bin/sh
php /home/username/public_html/Test3/Test.php

错误在哪里?

/ var / log / cron:

Sep  7 22:56:01 srv CROND[4344]: (root) CMD (sh /home/Username/public_html/Test3/test.sh)

test.php的

<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $date = date('h:i:s');
    $sql = "UPDATE deneme SET CRONTEST='".$date."' WHERE id=1";

    $stmt = $conn->prepare($sql);

    $stmt->execute();

    echo $stmt->rowCount() . " records UPDATED successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?> 

3 个答案:

答案 0 :(得分:2)

实现这一目标的多种方法。我的第一选择,直接从cron调用PHP脚本。 为此,请确保您的PHP脚本是可执行的(chmod 755) 确保CLI php脚本以..开头

#!/usr/bin/php
<?php

从shell中输入'which php'并相应地更改'/ usr / bin ...'行。 完成这些步骤后,您的cron条目可能会像。 。 。

*/5 * * * * /usr/bin/php -f /var/www/script.php

再次确保你指向php的实际位置 尝试在评论中解释,跑出了房间:/

答案 1 :(得分:0)

我解决了我的问题这个方法:

#!/bin/bash

data=$(/usr/bin/php -q /home/username/public_html/Test3/Test.php);

但我不能变数,例如:

#!/bin/bash

data=$(/usr/bin/php -q /home/username/public_html/Test3/Test.php name=Saracoglu);

它不起作用。我正在寻找..

答案 2 :(得分:0)

我知道它已经很旧了,但是今天我才碰到它。每当Bash脚本不执行PHP脚本(尽管具有正确的权限并且“ php”命令自行运行)时,我发现使用PHP的完整路径可以解决该问题。即

#!/bin/bash

other code
...
/usr/bin/php /home/username/public_html/Test3/Test.php

您可以使用which phpwhereis php来确定正确的路径。