【发布时间】:2020-08-16 02:10:09
【问题描述】:
我在 1and1.com 上托管,我已设置我的文件以使用 .htaccess 使用 php5 进行解析。
但这仅适用于apache,而不适用于命令行,默认为服务器默认php4。
所以目前我无法设置 cron 作业 以将我的代码作为 php5 运行。有什么想法吗?
【问题讨论】:
标签: php shell cron command-line-interface
我在 1and1.com 上托管,我已设置我的文件以使用 .htaccess 使用 php5 进行解析。
但这仅适用于apache,而不适用于命令行,默认为服务器默认php4。
所以目前我无法设置 cron 作业 以将我的代码作为 php5 运行。有什么想法吗?
【问题讨论】:
标签: php shell cron command-line-interface
按照https://community.1and1.com/using-php-composer-at-1and1/,在你的root projet中创建.profile并添加一行:
alias php='/usr/bin/php5.5-cli'
它对我有用。 注销并重新登录 SSH 并执行:
php -v
结果:
PHP 5.5.32 (cli)(构建时间:2016 年 2 月 15 日 16:13:44)
【讨论】:
如果两者都安装了,您需要做的就是使用相关的 PHP 二进制文件运行脚本。
例如:
// Runs using the PHP binary located at /usr/bin/php
* * * * * root /usr/bin/php -n "/path/to/script.php"
或
// Runs using the PHP binary located at /var/php5
* * * * * root /var/php5 -n "/path/to/script.php"
您只需要知道 PHP CLI 二进制文件的完整文件系统路径,并调用相关的路径来运行您的代码。
【讨论】:
如果您可以直接在 shell 中执行 PHP 脚本,例如:
$ script.php
您可以在第一行指定将执行脚本的二进制文件:
#!/usr/bin/php
<?php
那条线叫做shebang。该行在您的系统上可能有所不同,您需要知道要用于该脚本的 PHP CLI 二进制文件的完整文件系统路径。
如果您在 shell 中执行该文件,将使用指定的二进制文件。 cron 也是一样。
如果您通过网络服务器执行该文件,PHP 将静默删除该行。
【讨论】:
必须有两个 PHP 目录,其中一个应该是默认目录。尝试从服务器的根目录中找出 php5 的路径,并在您的 cron 作业中使用完整路径。
【讨论】:
whereis php 可以帮助您找到您的 php 位置
which php 或 which php5.5-cli 因为 1and1 命令行没有 whereis
这是另一种从命令行强制 PHP 1and1 的方法。
在您的服务器上使用 ssh 登录并创建一个名为 .profile 的新文件
在那里,您将编写以下行
alias php='/usr/local/bin/php5' 使用 ssh 重新登录并使用 php -v 检查 php 版本,您应该会看到
现在版本是 5。
【讨论】:
我终于得到了这个工作。问题有很多。
首先,所使用的 PHP 位于 /etc/bin 而不是 MAMP 版本。我能够更改它并改用 MAMP 版本。
其次,要通过 CLI 使用 php,您必须确保使用 php 的完整路径,而不仅仅是 php 本身。 IE。在 exec() 调用中使用 /MAMP/bin/php/php5.3.x/php。这现在对我有用。
你可以在这里查看我的 GIST...https://gist.github.com/1861487
【讨论】:
PATH=$PATH:/MAMP/bin
至少在 Linux 上,您还可以在脚本的第一行中指定所需的 PHP 版本,如下所示:
#!/usr/bin/php5.6
<?php
echo 'This is PHP version ' . phpversion() . "\n";
?>
使您的脚本可执行并按以下方式指定 cron 作业:
# Just runs the script, which itself cares for the right php version
* * * * * root "/path/to/script.php"
【讨论】: