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
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.
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.
Wenn Sie nach dem genannten Fehler einen unerwarteten T_STRING-Fehler erhalten, müssen Sie PHP 5.4+ installieren
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.
Bitten Sie ihn, eine Datei mit phpinfo()
zu erstellen. Er hat wahrscheinlich keine PHP Version> = 5.3.0 .
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();");
}
<FilesMatch "\.(inc|php|php3|php4|php44|php5|php52|php53|php54|php55|php56|phtml|phps)$">
AddHandler x-httpd-php53 .php
</FilesMatch>
in .htaccess