it-swarm.com.de

Unerwartetes Zeichen in Eingabe: '\' (ASCII = 92) state = 1

Mein Kunde sagt, dass er diese Fehlermeldung mit meinem Skript erhält:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /path/to//header.php  on line 34
Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in/path/to/header.php  on line 34

Die Zeile 34 in header.php ist nur use \Main\Class;

Nun sagte ich ihm, dass er PHP >= 5.3.0 haben muss und er sagt, dass seine PHP Version 5.3.24 ist.

Was könnte das Problem sein?

EDIT: Die Zeilen vor und nach

30. // Define absolute path
31. define("ABSPATH", $abs_path);
32. $_SESSION["abs_path"] = ABSPATH;
33. 
34. use \CNS\main\CNS;
35. $cns = new CNS();

EDIT 2:

Er hat mir das geschickt:

Program     Version
Apache:     2.2.24
CentOS:     CentOS release 6.4 (Final)
cPanel:     11.36.1 (build 8)
Curl:       7.12.1
MySQL       5.5.30
phpMyAdmin  3.5.5
Python:     2.6.6
Program     Version
Perl:       5.8.8
**PHP:        5.3.24**
ionCube Loader:     4.2.2
Zend Optimizer:     3.3.9
Ruby:       1.8.7
Rails:      3.2.8
OpenSSL:    1.0.0-fips
19
bosniamaj

Dies ist der Fall, wenn Sie versuchen, Namespaces zu verwenden, aber PHP nicht haben. 5.3. PHP 5.2 und darunter unterstützen keine Namespaces und geben diesen Fehler aus, wenn sie den Backslash sehen.

-- Bearbeiten: Versionen gemischt. Es sind 5.2 und darunter, die keine Namespaces haben, wenn ich mich nicht irre.

40
jraede

Nun sagte ich ihm, dass er PHP> = 5.3.0 haben muss und er sagt, dass seine PHP Version 5.3.24 ist

Was könnte das Problem sein?

Seine PHP Version ist eigentlich <5.3.0, ob er das weiß oder nicht.

Siehe den Fehler, der in vielen PHP -Versionen auftritt .

13
salathe

Wenn Sie nach dem genannten Fehler einen unerwarteten T_STRING-Fehler erhalten, müssen Sie PHP 5.4+ installieren

2
Mojtaba

Ich habe das gleiche Problem ausgeführt und habe einige Nachforschungen angestellt, die ich behoben habe. In meinem Fall verwende ich PHP7, und ich musste die Datei laravel bearbeiten, die sich in ~/.composer/vendor/laravel/installer/ befindet, wo sich die Shebang-Linie #!/usr/bin/env php befand zu #!/usr/bin/env php7

Nachdem ich den Handwerker wieder ausgeführt habe, habe ich es zum Laufen gebracht:

-bash-3.2$ laravel
Laravel Installer version 1.3.3

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help  Displays help for a command
  list  Lists commands
  new   Create a new Laravel application.
1
Thiago Cardoso

Bitten Sie ihn, eine Datei mit phpinfo() zu erstellen. Er hat wahrscheinlich keine PHP Version> = 5.3.0 .

1
silkfire

Wie andere Benutzer sagen: Die Verwendung von Namespaces ist nur für PHP -Versionen größer als 5.3.0 gültig, daher ist meine Lösung für die optionale Verwendung einer Bibliothek mit Namespaces die Überprüfung der PHP-Version und Verwenden Sie die Funktion eval () , um zu vermeiden, dass niedrigere Versionen von PHP auch während der Kompilierungszeit einen Fehler auslösen.

Etwas wie das:

if ( phpversion() > '5.3.0' ){
    include_once('/path/to/Library.php'); 
    eval("Library\Foo::bar();"); 
}
1
caos30
<FilesMatch "\.(inc|php|php3|php4|php44|php5|php52|php53|php54|php55|php56|phtml|phps)$">

 AddHandler x-httpd-php53 .php

</FilesMatch>

in .htaccess

0
Popov Andrey