我需要运行一个脚本来执行一个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;
?>
答案 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 php
和whereis php
来确定正确的路径。