Ik heb een script wat via affiliate netwerken datafeeds download en inlees.


$file = file_get_contents($_POST['url']);


Dit werkt primavia shell, maar via php blijft de string leeg.

Ik krijg als error : "failed to open stream: No such file or directory in ......"

De link begint met http://blabla

Nogmaals in de shell werkt dit, wat is hier verkeerd aan?

als ik via php een exec wil laden met allow_url_fopen on

exec('php'. DOC_ROOT.'shopconnector/download.php?feedId='.$_POST['id'], $output, $return_var);


waar ik $file = file_get_contents($q['url']); probeer te laden, maar niks werkt, zelfs met alles 777 rechten.

Hoe kan ik dit debuggen?

groet

Daniel
Gezien je error ga ik ervan uit dat er een bepaalde bestand wat je includeert in je script, niet gevonden kan worden.

Als je met scripts in de cron/shell werkt, dan zou je een volledig pad moeten gebruiken bij includes.
Een cronjob draait niet vanuit de directory waar je website staat, dus mogelijk zal deze je geincludeerde bestand in zijn eigen directory zoeken. In de shell zou zo iets soortgelijks ook gelden.

Voor CLI-scripts (Command Line Interface) gebruik ik altijd dit:

<?php
$base = dirname(dirname(__FILE__));
include_once $base . '/lib/db.inc.php';
// voer hier de rest uit.
?>

Ik gebruikte wel de volledige paden, maar het lijkt erop dat het via de affiate websites niet altijd werk. gogole.nl weer wel.
Is er verschil in http en https in de URL?
Wacht, probeer je via exec een lokaal pad uit te voeren als url? Dat kan natuurlijk niet.
niet als uri

als eerste probeerde ik gewoon dit:


$file = file_get_contents($q['url']);
$r = file_put_contents(DOC_ROOT.'shopconnector/feeds/feed'.$_GET['feedId'].'import.csv', $file);


file is hier leeg, maar via de shell werkt dit script wel, de paden zijn correct.
nu probeer ik het via PHP met de shell te laden


	$file = shell_exec('/usr/bin/php /home/admin/domains/verg/private_html/shopconnector/download.php '.$id.'');

download.php
$file = file_get_contents($q['url']);
$r = file_put_contents(DOC_ROOT.'shopconnector/feeds/feed'.$_GET['feedId'].'import.csv', $file);



[size=xsmall]Toevoeging op 27/11/2018 13:53:54:[/size]

update, met wget in shell of php werkt het ook niet (ERROR 400 bad request), maar vreemdgenoeg werkt de het wel met file_get_contents via de shell.



[size=xsmall]Toevoeging op 27/11/2018 13:55:08:[/size]

Resolving df.zanox.com (df.zanox.com)... 195.216.249.113
Connecting to df.zanox.com (df.zanox.com)|195.216.249.113|:80... connected.
HTTP request sent, awaiting response... 400 Bad Request
2018-11-27 13:54:43 ERROR 400: Bad Request.
De argumenten zijn geen probleem en komen ook gewoon door en aonder argumenten hetzelfde.

de server is een VPS centos 7.

feedId bestaat niet, maar de argumenten zijn op deze wijze benaderbaar:

download.php
$_GET['feedId'] = $argv[1];

Maar snap er niks van, waarom het neit werkt, ik wil gewoon een previe van een feed laten zien van maximaal 300 karakters, om te testen of de feeds wel werken of niet etc.

groet

Daniel
Je snapt niet waarom het niet werkt omdat je niet weet waar het misgaat.

Je zult dus stap voor stap moeten gaan kijken waar het spaak loopt.

Heb je je errorlogs geraadpleegd? Want nu zit je een beetje tegen een black box aan te turen - sja geen wonder dat je dan niet weet wat er gebeurt.

Desnoods breng je logging aan in het script zelf, zodat je ook "getuigen" hebt van de actuele waarden van variabelen.

Of je maakt dus eerst een normaal werkend script, en schrijft dit dan om naar een shellscript. Wederom stap voor stap, anders ben je inderdaad blind aan het programmeren.

Reageren