web-dev-qa-db-fra.com

Caractère inattendu en entrée: '\' (ASCII = 92) state = 1

Mon client dit qu'il reçoit cette erreur en utilisant mon script:

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

La ligne 34 dans header.php est simplement use \Main\Class;

Maintenant, je lui ai dit qu'il doit avoir PHP >= 5.3.0 et il dit que sa version PHP est 5.3.24

Quel pourrait être le problème?

EDIT: les lignes avant et après

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:

Il m'a envoyé ceci:

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

Cela se produit si vous essayez d'utiliser des espaces de noms mais que vous n'avez pas PHP 5.3. PHP 5.2 et les versions antérieures ne prennent pas en charge les espaces de noms et génèrent cette erreur lorsqu'ils voient la barre oblique inversée.

--.__ Edit: mélange les versions. C'est la version 5.2 et inférieure qui n'a pas d'espaces de noms, si je ne me trompe pas.

40
jraede

Maintenant, je lui ai dit qu'il doit avoir PHP> = 5.3.0 et il dit que sa version PHP est 5.3.24.

Quel pourrait être le problème?

Sa version PHP est en réalité <5.3.0, qu’il le sache ou non.

Voir l'erreur survenant sur de nombreuses versions PHP .

13
salathe

Si vous obtenez une erreur 'T_STRING' inattendue après l'erreur mentionnée, vous devez installer PHP 5.4+.

2
Mojtaba

J'ai couru le même problème, et en faisant quelques recherches, j'ai réussi à le réparer . Dans mon cas, j'utilise PHP7, et ce que je devais faire, c'est éditer le fichier laravel situé dans ~/.composer/vendor/laravel/installer/, où la ligne Shebang était #!/usr/bin/env php j'ai changé pour #!/usr/bin/env php7

Après avoir relancé l'artisan, je l'ai fait fonctionner:

-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

Demandez-lui de créer un fichier avec phpinfo(). Il n'a probablement pas la version PHP> = 5.3.0 .

1
silkfire

Comme d’autres utilisateurs le disent: l’utilisation des espaces de noms n’est valable que pour les versions de PHP supérieures à 5.3.0 et ma solution pour pouvoir inclure une utilisation optionnelle d’une bibliothèque utilisant des espaces de noms consiste à vérifier la version de PHP utilisez la fonction eval () pour éviter que les versions inférieures de PHP n'enregistrent une erreur, même au moment de la compilation.

Quelque chose comme ça:

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>

en .htaccess

0
Popov Andrey