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

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

У меня есть этот скрипт:

#!/bin/bash

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

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

PHP:

if (($handle = fopen($directory_root."filename.csv", "r")) !== FALSE){
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE){
$sql = "INSERT INTO tablename(col1,col2,col3,col4,col5)
VALUES ('".mysql_escape_string($data[0])."',
'".mysql_escape_string($data[1])."',
'".mysql_escape_string($data[2])."',
'".mysql_escape_string($data[3])."',
'".mysql_escape_string($data[4])."')";
$query = mysql_query($sql);
}
fclose($handle);
}

0

Решение

На вашем вызывающем сервере пусть ваша задача cron выполняет следующий скрипт (который также находится на вашем вызывающем сервере):

<?php

$options = array(
CURLOPT_URL             => 'http://example.com/csv_import.php',
);

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

?>

Таким образом, на клиенте:
cron вызывает runCurl.php
runCurl.php выдает запрос http в файл csv_import.php сервера

На сервере:
csv_import.php выполняется, записывая данные в вашу базу данных (которая находится на том же сервере, что и csv_import.php)
csv_import.php хранится в / htdocs, так что он доступен по запросу http
Права доступа к файлу csv_import.php устанавливаются так, чтобы он был исполняемым

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]