it-swarm.dev

Keine Eingabedatei angegeben

Ich verwende Anchor CMS und habe gerade ein Upgrade auf Version 0.8 durchgeführt. Wenn ich versuche, das Installationsprogramm auszuführen, erhalte ich die Fehlermeldung "Keine Eingabedatei angegeben". Ich glaube, es ist höchstwahrscheinlich ein .htaccess-Problem, aber ich bin mir nicht sicher, wie die richtigen Einstellungen sein sollten.

Meine Website kann hier gefunden werden.

Mein .htaccess ist eingestellt auf:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase {base}

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ {index} [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>

Ich verwende auch einen GoDaddy als Hosting-Provider, falls das hilft. 

28
Cole Roberts

Die Keine Eingabedatei angegeben ist eine Nachricht, die Sie aufgrund der Implementierung von PHP auf Ihrem Server erhalten. Dies bedeutet in diesem Fall eine CGI-Implementierung (kann mit phpinfo() überprüft werden.) ).

Um dies richtig zu erklären, müssen Sie ein grundlegendes Verständnis dafür haben, wie Ihr System mit URLs arbeitet. Basierend auf Ihrer .htaccess-Datei scheint Ihr CMS die URL als PATH_INFO-Variable zu übergeben. Bei CGI- und FastCGI-Implementierungen steht PATH_INFO nicht zur Verfügung. Wenn Sie also versuchen, den URI weiterzugeben, schlägt PHP mit dieser Nachricht fehl. 

Wir müssen eine Alternative finden.

Eine Möglichkeit besteht darin, dies zu beheben. Ein Blick in die Dokumentation zu core php.ini-Direktiven Sie können sehen, dass Sie die Arbeitsweise Ihrer Implementierung ändern können. Obwohl GoDaddy es Ihnen wahrscheinlich nicht erlaubt, die PHP -Einstellungen in einer gemeinsam genutzten Umgebung zu ändern.

Wir müssen eine Alternative zum Ändern der PHP -Einstellungen finden.
Wenn Sie sich system/uri.php in Zeile 40 anschauen, werden Sie feststellen, dass der CMS zwei Arten der URI-Erkennung versucht - die erste ist PATH_INFO, die wir gerade gelernt haben, funktioniert jedoch nicht - die andere ist REQUEST_URI.

Dies sollte im Grunde ausreichend sein - aber das Analysieren der übergebenen URI wird Sie mehr Probleme bereiten, da die URI, die Sie an REQUEST_URI variable übergeben könnten, parse_url() nur den URL-Pfad zurückgibt - was Sie im Grunde zurückgibt zurück auf null.

Jetzt gibt es eigentlich nur noch eine Möglichkeit - und das ändert den Kern des CMS. Der URI-Erkennungsteil ist nicht ausreichend.

Fügen Sie QUERY_STRING zu dem Array in Zeile 40 als das erste Element in system/uri.php hinzu und ändern Sie Ihren .htaccess so, dass er wie folgt aussieht:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?/$1 [L]

Dadurch wird der von Ihnen angeforderte URI an index.php als QUERY_STRING übergeben, und die URI-Erkennung kann gefunden werden.

Dies macht es andererseits unmöglich, das CMS zu aktualisieren, ohne die Kerndateien zu ändern, bis dies behoben wurde. Das ist Scheiße...

Benötigen Sie eine bessere Option?
Finden Sie ein besseres CMS.

106
Repox

Zitieren http://support.statamic.com/kb/hosting-servers/running-on-godaddy :

Wenn Sie GoDaddy als Host verwenden möchten und im Kontrollfeld die Meldung "Keine Eingabedatei angegeben" angezeigt wird, müssen Sie in Ihrem Weboot eine php5.ini-Datei mit der folgenden Regel erstellen:

cgi.fix_pathinfo = 1

beste einfache Antwort, nur ein Zeilenwechsel und Sie sind fertig.

empfohlen für Godaddy-Hosting.

19
chetan

Ich hatte das gleiche Problem. Um das Problem zu beheben, musste ich meine htacces-Datei folgendermaßen ändern:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /crm/

Options +FollowSymLinks 

RewriteCond %{HTTP_Host} ^mywebsite.com [NC] 

RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [L,R=301] 

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L]

RewriteRule ^index.php/(.*)$ [L]
</IfModule>
6
webicy

In meinem Fall gab es einen Fehler in der php.ini-Variable open_basedir. 

6
jbaylina

GoDaddy unterstützt derzeit (Februar '13) die Modifikation von FastCGI für einige Konten, die PHP 5.2.x oder früher verwenden. Siehe GoDaddy-Artikel " Deaktivieren von FastCGI in Ihrem Hosting-Konto ".
(In meinem Fall ist dies offensichtlich notwendig, um die aktuelle Version von LimeSurvey (2.0) in einen laufenden Zustand zu bringen.)

3
DragonLord

Das Hinzufügen von php5.ini funktioniert überhaupt nicht ... __ Siehe aber den Abschnitt 'FastCGI deaktivieren' in diesem Artikel auf GoDaddy: http://support.godaddy.com/help/article/ 5121/change-your-hosting-accounts-Dateiendungen

Fügen Sie die folgenden Zeilen den .htaccess-Dateien hinzu (Installationsverzeichnis für webroot und Website):

Options +ExecCGI
addhandler x-httpd-php5-cgi .php

Es rettet mich einen Tag! Prost! Danke DragonLord !

2
jondinham

ulimit -n 2048 ausführen

Und starte php/php-fpm neu

2
Yarin Gold

Es hat für mich..add über .htaccess-Datei funktioniert. Dadurch würde FastCGI für das gemeinsam genutzte Hosting-Konto von Godaddy deaktiviert.

Optionen + ExecCGI

addhandler x-httpd-php5-cgi .php

2
user2060571

Aktualisieren

Alle vorherigen Bewertungen wurden von mir getestet, aber es gab keine Lösung. Aber ich habe nicht aufgegeben.

LÖSUNG

Kommentieren Sie die folgenden Zeilen in meiner NGINX-Konfiguration aus

   [/etc/nginx/site-avaible/{sitename}.conf]

Der gleiche Code sollte im Site-Enable-Ordner folgen

  #fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

Und kommentiere dies:

  fastcgi_param SCRIPT_FILENAME / www / {namesite} / public_html $ fastcgi_script_name;

Ich habe mich mehrmals vom Original geändert:

   #fastcgi_pass unix: /var/php-nginx/9882989289032.sock;

Zurück zu diesem Thema:

   #fastcgi_pass 127.0.0.1:9007;

Und endlich habe ich gefunden, was funktioniert ...

   fastcgi_pass localhost: 8004;

Ich empfehle auch diese Zeilen ...

   #fastcgi_index index.php;
   #include fastcgi_params;

Und sogar das FastCGI-Timeout (nur um die Leistung zu verbessern)

  fastcgi_read_timeout 3000;

Während des Vorgangs überprüfte ich das NGINX-Protokoll auf alle Änderungen. (Dies ist sehr wichtig, da der falsche Parameter angezeigt wird.)

In meinem Fall ist es so, aber es hängt von der Konfiguration ab:

  error_log/var/log/nginx/{site}_error_log;

Testen Sie die NGINX-Konfiguration

 nginx -t

Achtung, dies ist eine der Optionen ... Nun, auf demselben Server funktioniert das, was auf dieser Site nicht funktioniert hat, auch auf anderen. Denken Sie also daran, dass die Einstellungen von der Plattform abhängen.

In diesem Fall war es für Joomla CMS.

0
PauloBoaventura

Die Lösung für mich bestand darin, Leerzeichen in einer meiner Hilfsdateien zu entfernen. In dem Fehler wurden zwei Seiten aufgeführt, eine CI-Sitzungsdatei und einer meiner benutzerdefinierten Helfer. 

0
jason

In meinem Fall habe ich es behoben, indem ich die Regeln in einer LocationMatch-Direktive anstieß

<LocationMatch "^/.">
    #your rewrite rules here
</LocationMatch>

/. entspricht any location

Ich habe die Umschreiberegeln in einem der .conf Dateien von Apache NICHT .htaccess Datei.

Ich weiß nicht, warum das bei mir funktioniert hat, das ist mein aktuelles Setup

  • Apache Version 2.4
  • PHP 7.1
  • OS Centos 7
  • PHP-FPM
0
Accountant م