Назад | Перейти на главную страницу

Как вызвать PHP с другого сервера?

Как вызвать PHP с другого сервера с помощью сценария оболочки? У меня есть сценарии PHP и оболочки, 2 файла хранятся на разных серверах.

У меня есть такой сценарий:

#!/bin/bash

php "http://example.com/csv_import.php"

Но когда я запускаю эту команду вручную, я получаю ошибку: Could not open input

Как правильно вызвать PHP с помощью сценария оболочки?

Где ты хочешь выполнять скрипт PHP? Если он находится на другом сервере, вам просто нужно нажать на соответствующий URL:

curl "http://example.com/csv_import.php"

Или, если требуется запрос POST,

curl -XPOST "http://example.com/csv_import.php"

Это довольно просто.


Однако, если вы хотите скачать скрипт PHP и запустите его этот сервер, вы находитесь в немного более сложной ситуации. Во-первых, вы должны убедиться, что удаленный сервер отправляет фактическое сценарий, вместо запуска сценария и отправки результата, как это было бы в нормальной ситуации (или, возможно, у вас есть сценарий, который при обработке выводит другой сценарий). Как правило, это можно сделать, отключив синтаксический анализ PHP на своем веб-сервере или изменив расширение файла на нестандартное (возможно, просто .txt).

Теперь вы хотите загрузить этот сценарий и передать его с исполняемым файлом PHP на локальном компьютере. Сначала убедитесь, что он работает, запустив curl выше и проверяя, что вывод фактически является самим сценарием PHP. Если вы этого достигли, то что-нибудь простое, например

curl "http://example.com/csv_import.php.txt" | php

должен сделать свое дело.

Сложность на другом конце.

Если вы не можете отключить синтаксический анализ PHP на другом конце, вы можете получить файл PHP оттуда другим способом, например scp или rsync, а затем выполнить его локально.

Вы используете любой HTTP-клиент командной строки, например curl или wget сделать HTTP-запрос.

Можешь попробовать

#!/usr/local/bin/php

Т.е. Первый аргумент php, если он не похож на параметр, - это имя исполняемого файла PHP, а -q - только CGI.