如何使用 shell 脚本从另一台服务器调用 PHP?我有一个 PHP 和 shell 脚本,这两个文件存储在不同的服务器中。
我有这个脚本:
#!/bin/bash
php "http://example.com/csv_import.php"
但是当我手动运行此命令时,出现错误:Could not open input
如何使用 shell 脚本正确调用 PHP?
答案1
你想去哪里执行PHP 脚本?如果它在其他服务器上,那么你只需要点击相应的 URL:
curl "http://example.com/csv_import.php"
或者,如果它需要 POST 请求,
curl -XPOST "http://example.com/csv_import.php"
这相当简单。
然而,如果你想下载一个 PHP 脚本并运行它这服务器,你的情况会稍微复杂一些。首先,你必须确保远程服务器发送实际的脚本,而不是像正常情况那样运行脚本并发送结果(或者,也许您有一个脚本,在处理时会输出另一个脚本)。通常,您可以通过在 Web 服务器中禁用 PHP 解析或将文件扩展名更改为非标准扩展名(可能只是.txt
)来实现这一点。
现在您要下载该脚本,并在本地计算机上使用 PHP 可执行文件运行它。首先,通过运行curl
上述命令并检查输出是否确实是 PHP 脚本本身来检查它是否有效。如果您已经实现了这一点,那么可以简单地执行如下操作
curl "http://example.com/csv_import.php.txt" | php
应该可以解决问题。
棘手的部分在另一端。
如果您无法在另一端禁用 PHP 解析,您可能能够通过其他方式(例如scp
或rsync
)从那里获取 PHP 文件,然后在本地执行它。
答案2
您可以使用任何命令行 HTTP 客户端(如curl
或)wget
发出 HTTP 请求。
答案3
你可以试试
#!/usr/local/bin/php
即,如果 php 的第一个参数看起来不像一个选项,那么它就是要执行的 PHP 文件的名称,而 -q 仅仅是 CGI。