Hallo, grosse bitte um Hilfe. Habe ein PHP-Script, das auf eine c datei zugreifen soll. Jetzt kann ich bei meinem Hoster aber keine c datei laufen lassen, die tut da einfach nichts (geht um ein astroscript und die c datei enthält die daten die es braucht um planetenstände längen und breitengrade etc, zu berechnen). Ich steh hier jetzt wie ein Ochs vom Berg, der Programmierer hat mir geschrieben die Datei ist c für Linux, und das es wohl nicht geht, weil c auf meinem Webspace nicht ausgeführt wird. Ich habe leider überhaupt keine Ansatzpunkt, wie ich dieses Problem lösen kann. Bitte nicht wundern über meine vielleicht doofe Frage, aber ich bin nicht vom Fach und ausser ab und an mal vorgefertigte php oder perl skripte meinen Bedürfnissen entsprechend umzustricken habe ich Null Ahnung. Eigentlich wäre meine Frage, kann man C auf php umstricken? Wer macht sowas, wie teuer ist das? Oder müsste ich besser den Hoster wechseln. Gibt es überhaupt Webspace wo C ausgeführt wird (habe schon viel rumtelefoniert, aber an den Servicetelefonen konnten die mir gar nichts dazu sagen) Wie könnte man ne Problemlösung überhaupt angehen? Ich weiss echt nicht weiter.
Mit PHP auf C zugreifen
Einklappen
X
-
Hallo,
ich habe den Betreff deines Posts angepasst. "Hilfe" braucht hier so gut wie jeder. Und da die Zeit der helfenden nur begrenzt ist, sollte im Betreff schon klar sein, worum es geht. Bitte gewöhn dir das für die Zukunft an!
Desweiteren: Hast du eine Ausführbare Datei? Dann ist es erst einmal unerheblich, ob das Programm in C geschrieben wurde, oder nicht. Wenn dein Programmierer dir sagt, dass sie für Linux ist, dann wird das schon stimmen.
Was hast du denn Probiert, um dein Programm überhaupt auszuführen? Quelltext deines PHP-Scriptes wäre hilfreich!
Da du ja selber sagst, dass du keine Ahnung hast, und somit auch keine Grundlagen lieferst, mit denen du die Hinweise, die man hier sonst bekommen würde, abarbeitest, verschiebe ich das ganze mal in die Projekthilfe!
-
C wird nicht ausgeführt. C wird kompiliert und dann ist es nicht mehr C.
Damit ein C-Programm auf deinem Werbserver funktioniert, muss es für dessen Architektur (Linux?) geschrieben und kompiliert worden sein. Ich gehe mal davon aus, dass das der Fall ist.
Schau dir mal system() und dessen Kollegen an! Damit kannst du aus PHP heraus Programme in einer Shell starten.
Manche Hoster verbieten das aber. system() und Co. sind bei denen gar nicht verfügbar.
Kommentar
-
Hallo,
Zitat von futurefee Beitrag anzeigenkann man C auf php umstricken?
Gruß,
Amica[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
Erstmal Danke, dass ihr euch überhaupt drauf einlasst ner alten Frau was zu erklären. Ich habe sowas natürlich nie gelernt, aber ich bastel halt gerne an meiner Homepage rum, öfter mal was Neues reinsetzen, und freu mich immer wenn die Technik das tut, was sie soll.
Die infos hab ich mir gerade aufgerufenausgedruckt.
Server Software ist unix.
Der Aufruf der kommt, wenn es darum geht anhand der Geburstdaten zu rechnen ist folgender:
Warning: file(natal_files/house_.txt) [[COLOR=#0000ff]function.file[/COLOR]]: failed to open stream: No such file or directory in /mnt/web5/10/96/5447996/htdocs/xxxxx/astrology_scripts/natal_line.php on line 1320
In Zeile 1320 steht
$file_array = file($file)
Die Datein mit den Häusern sind vorhanden, sehen aber folgendermassen aus:
house_1.txt, house_2.txt u.s.w..
Ein php-script mit den Funktionen habe ich im gesamten Netz gesucht, aber nicht gefunden. Hab echt alles durchforstet.
Geld um mir das zum Laufen zu bringen wäre okay.
Zum Skript, generell lässt es sich alles aufrufen. Es zeigt auch den Radix in verschiedenen Form an, aber es rechnet halt nicht.
Kommentar
-
OffTopic:
Wenn es nicht um astronomische sondern um astrologische Berechnungen geht, würde ich im Zweifelsfall alles gleich auf mt_rand umschreiben und damit den Sternen überlassen.
SCNR
[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
Das System bei meinem Hoster führt es nicht aus
Jetzt suche ich dringend einen Hoster wo es ausgeführt werden kann. Falls jemand einen Tip hat, würde ich mich drüber freuen. Geb ja nicht so schnell auf.
Schönen Abend noch
Futurefee
Kommentar
-
Zitat von futurefee Beitrag anzeigenJetzt suche ich dringend einen Hoster wo es ausgeführt werden kann.
Falls jemand einen Tip hat, würde ich mich drüber freuen. Geb ja nicht so schnell auf.
Gerade was gängige Algorithmen in der Astronomie betrifft, gibt es oft brauchbare Umsetzungen für Perl oder Python. PHP ist da etwas armselig bestückt, weil Kalender- und Sonnenstandsfunktionen schon eingebaut sind, und der normale PHP-Programmierer damit anscheinend vollkommen zufrieden ist.
Was deine Fehlermeldung angeht: Die besagt nur, dass die per file() angeforderte Datei nicht vorhanden ist oder das Script keine ausreichenden Zugriffsrechte besitzt.
Kommentar
-
Hag mal den Link zu der Datei angehängt
http://www.kleinegutefee.com/astrotest/sweph/swetest
Liebe Grüße
Futurefee
Kommentar
-
Hallo,
fireweasel sprach vom Quellcode, nicht von der EXE oder DLL als text/plain. Das ist nicht menschenlesbar.
Gruß,
Amica[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
Zitat von AmicaNoctis Beitrag anzeigenfireweasel sprach vom Quellcode, nicht von der EXE oder DLL als text/plain. Das ist nicht menschenlesbar.
Und danke, dass du die EXE für mich downgeloadet und getestet hast. Man weiß ja nie, welche böse Software man sich einfängt.
Zitat von futurefee Beitrag anzeigendas ist die Datei die nicht ausgeführt wird. Mehr weiss ich doch darüber auch nicht, das ist doch mein Problem.
Kommentar
-
Die
Wo fang ich an? Für die Erstellung von Horsokopen hat man Formulare, in die werden Datum, Uhrzeit und Ort eingegeben. Dann greift das auf die Ephemeridentabellen zu und gleichzeitig muss es auf die zugehörigen Texte zugreifen. Was es nicht tut, da ich nicht an die Ephemeridentabellen rankomme. Das soll eine der Ephemeridentabellen sein (ich schreibe soll, weil ich noch gar nicht reingucken konnte, da ich die weder auf meinem kleinen Laptop noch auf dem alten Mac aufbekomme):
http://www.kleinegutefee.com/astrote...ph/seas_18.se1
Ausserdem ´müssen die Planetenstände aus den Ephemeridentabellen gleichzeitig in eine Grafik eingetragen werden.
Praktisch sieht es so aus:
http://www.kleinegutefee.com/astrotest/
Wenn man da auf right now klickt, müssten sich die Transite des Augenblicks als Grafik und als Tabelle zeigen (bei right now ohne Textbeschreibungen, weil es nur im die Transite an sich geht) Tun sie aber nicht, weil es nicht auf die Tabellen zugreifen kann. Der Zugriff auf die Tabellen läuft über swetest. Beim Geburtshoroskop kann es zum Beispiel, wie ich vor kurzem schon beschrieb nicht auf die dazugehörigen Text zugreifen, weil es dazu erstmal die Planetenstände haben muss, die in den Tabellen stehen. Da swetest auf dem Server nicht ausgeführt wird, komme ich nicht an die Tabellen.
Hier ist z.B. der Sourcecode von der Datei right_now.php
PHP-Code:<?
// calculate astronomic data
$swephsrc = 'sweph';
$sweph = 'sweph';
// Unset any variables not initialized elsewhere in the program
unset($PATH,$out,$pl_name,$longitude1,$speed1);
//get date and time right now
$date_now = date ("Y-m-d");
$inmonth = gmdate("m");
$inday = gmdate("d");
$inyear = gmdate("Y");
$inhours = gmdate("H");
$inmins = gmdate("i");
$insecs = "0";
$intz = 0;
// adjust date and time for minus hour due to time zone taking the
hour negative
$utdatenow = strftime("%d.%m.%Y", mktime($inhours, $inmins, $insecs,
$inmonth, $inday, $inyear));
$utnow = strftime("%H:%M:%S", mktime($inhours, $inmins, $insecs,
$inmonth, $inday, $inyear));
putenv("PATH=$PATH:$swephsrc");
// get LAST_PLANET planets
exec ("swetest -edir$sweph -b$utdatenow -ut$utnow -p0123456789DAttt
-eswe -fls -g, -head", $out);
// Each line of output data from swetest is exploded into array $row,
giving these elements:
// 0 = longitude
// 1 = speed
// planets are index 0 - index (LAST_PLANET)
foreach ($out as $key => $line)
{
$row = explode(',',$line);
$longitude1[$key] = $row[0];
$speed1[$key] = $row[1];
};
include("constants.php"); // this is here because we must rename the
planet names
//add a planet - maybe some code needs to be put here
//display right now data
echo "<center>";
echo "<FONT color='#0000ff' SIZE='3' FACE='Arial'>";
echo "<b>Transits</b><br />";
echo '<b>On ' . strftime("%A, %B %d, %Y<br>%X (time zone = GMT)</b><br
/>\n", mktime($inhours, $inmins, $insecs, $inmonth, $inday, $inyear));
echo "</font>";
echo "</center>";
$rx1 = "";
for ($i = 0; $i <= SE_TNODE; $i++)
{
if ($speed1[$i] < 0)
{
$rx1 .= "R";
}
else
{
$rx1 .= " ";
}
}
$rx2 = $rx1;
// no need to urlencode unless perhaps magic quotes is ON (??)
$ser_L1 = serialize($longitude1);
$ser_L2 = serialize($longitude1);
echo "<center>";
echo "<img border='0'
src='chartwheel_right_now_line.php?rx1=$rx1&rx2=$rx2&p1=$ser_L1&p2=$ser_L2'
width='730' height='400'>";
echo "</center>";
echo "<br>";
//display right now data
echo '<center><table width="40%" cellpadding="0" cellspacing="0"
border="0">',"\n";
echo '<tr>';
echo "<td><font color='#0000ff'><b> Planet </b></font></td>";
echo "<td><font color='#0000ff'><b> Longitude </b></font></td>";
echo '</tr>';
for ($i = 0; $i <= SE_TNODE; $i++)
{
echo '<tr>';
echo "<td>" . $pl_name[$i] . "</td>";
echo "<td><font face='Courier New'>" .
Convert_Longitude($longitude1[$i]) . " " . Mid($rx1, $i + 1, 1) .
"</font></td>";
echo '</tr>';
}
echo '<tr>';
echo "<td>   </td>";
echo "<td>   </td>";
echo '</tr>';
echo '</table></center>',"\n";
echo "<br />";
// display right now data - aspect table
echo '<center><table width="40%" cellpadding="0" cellspacing="0"
border="0">',"\n";
echo '<tr>';
echo "<td><font color='#0000ff'><b> Planet </b></font></td>";
echo "<td><font color='#0000ff'><b> Aspect </b></font></td>";
echo "<td><font color='#0000ff'><b> Planet </b></font></td>";
echo "<td><font color='#0000ff'><b> Orb </b></font></td>";
echo '</tr>';
for ($i = 0; $i <= SE_TNODE; $i++)
{
echo "<tr><td colspan='4'> </td></tr>";
for ($j = 0; $j <= SE_TNODE; $j++)
{
$q = 0;
$da = Abs($longitude1[$i] - $longitude1[$j]);
if ($da > 180)
{
$da = 360 - $da;
}
// set orb - 8 if Sun or Moon, 6 if not Sun or Moon
if ($i == SE_POF Or $j == SE_POF)
{
$orb = 3;
}
elseif ($i == SE_LILITH Or $j == SE_LILITH)
{
$orb = 3;
}
elseif ($i == SE_TNODE Or $j == SE_TNODE)
{
$orb = 3;
}
elseif ($i == SE_VERTEX Or $j == SE_VERTEX)
{
$orb = 3;
}
elseif ($i == 0 Or $i == 1 Or $j == 0 Or $j == 1)
{
$orb = 3;
}
else
{
$orb = 3;
}
// is there an aspect within orb?
if ($da <= $orb)
{
$q = 1;
$dax = $da;
}
elseif (($da <= (60 + $orb)) And ($da >= (60 - $orb)))
{
$q = 6;
$dax = $da - 60;
}
elseif (($da <= (90 + $orb)) And ($da >= (90 - $orb)))
{
$q = 4;
$dax = $da - 90;
}
elseif (($da <= (120 + $orb)) And ($da >= (120 - $orb)))
{
$q = 3;
$dax = $da - 120;
}
elseif (($da <= (150 + $orb)) And ($da >= (150 - $orb)))
{
$q = 5;
$dax = $da - 150;
}
elseif ($da >= (180 - $orb))
{
$q = 2;
$dax = 180 - $da;
}
if ($q > 0 And $i != $j)
{
// aspect exists
echo '<tr>';
echo "<td>" . $pl_name[$i] . "</td>";
echo "<td>" . $asp_name[$q] . "</td>";
echo "<td>" . $pl_name[$j] . "</td>";
echo "<td>" . sprintf("%.2f", abs($dax)) . "</td>";
echo '</tr>';
}
}
}
echo '</table></center>',"\n";
echo "<br /><br />";
if (EMAIL_enabled == True)
{
@mail(EMAIL, "Right Now", "");
}
echo "<br /><br />";
include ('footer.html');
exit();
Function left($leftstring, $leftlength)
{
return(substr($leftstring, 0, $leftlength));
}
Function Reduce_below_30($longitude)
{
$lng = $longitude;
while ($lng >= 30)
{
$lng = $lng - 30;
}
return $lng;
}
Function Convert_Longitude($longitude)
{
$signs = array (0 => 'Ari', 'Tau', 'Gem', 'Can', 'Leo', 'Vir', 'Lib',
'Sco', 'Sag', 'Cap', 'Aqu', 'Pis');
$sign_num = floor($longitude / 30);
$pos_in_sign = $longitude - ($sign_num * 30);
$deg = floor($pos_in_sign);
$full_min = ($pos_in_sign - $deg) * 60;
$min = floor($full_min);
$full_sec = round(($full_min - $min) * 60);
if ($deg < 10)
{
$deg = "0" . $deg;
}
if ($min < 10)
{
$min = "0" . $min;
}
if ($full_sec < 10)
{
$full_sec = "0" . $full_sec;
}
return $deg . " " . $signs[$sign_num] . " " . $min . "' " . $full_sec
. chr(34);
}
Function mid($midstring, $midstart, $midlength)
{
return(substr($midstring, $midstart-1, $midlength));
}
Function safeEscapeString($string)
{
// replace HTML tags '<>' with '[]'
$temp1 = str_replace("<", "[", $string);
$temp2 = str_replace(">", "]", $temp1);
// but keep <br> or <br />
// turn <br> into <br /> so later it will be turned into ""
// using just <br> will add extra blank lines
$temp1 = str_replace("[br]", "<br />", $temp2);
$temp2 = str_replace("[br /]", "<br />", $temp1);
if (get_magic_quotes_gpc())
{
return $temp2;
}
else
{
return mysql_escape_string($temp2);
}
}
?>
[COLOR=#22229c]http://www.astrowin.org/astrology_scripts/right_now.php[/COLOR]
Grüsslis
FuturefeeZuletzt geändert von futurefee; 21.12.2009, 23:28.
Kommentar
-
Zitat von futurefee Beitrag anzeigenJetzt suche ich dringend einen Hoster wo es ausgeführt werden kann. Falls jemand einen Tip hat, würde ich mich drüber freuen. Geb ja nicht so schnell auf.
Ok - da warst du schneller.
Kommentar
Kommentar