Неожиданный символ на входе: '\' (ASCII = 92) state = 1
Мой клиент говорит, что он получает эту ошибку, используя мой 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
Строка 34 в header.php
- это просто use \Main\Class;
Теперь я сказал ему, что должен иметь PHP >= 5.3.0
, и он говорит, что его версия PHP 5.3.24
В чем может быть проблема?
EDIT: строки до и после
30. // Define absolute path
31. define("ABSPATH", $abs_path);
32. $_SESSION["abs_path"] = ABSPATH;
33.
34. use \CNS\main\CNS;
35. $cns = new CNS();
ИЗМЕНИТЬ 2:
Он прислал мне это:
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
Ответы
Ответ 1
Это происходит, если вы пытаетесь использовать пространства имен, но не имеете PHP 5.3. PHP 5.2 и ниже не поддерживают пространства имен и бросают эту ошибку, когда видят обратную косую черту.
-
Изменить: смешать версии. Это 5.2 и ниже, у которых нет пространств имен, если я не ошибаюсь.
Ответ 2
Теперь я сказал ему, что у него должен быть PHP >= 5.3.0, и он говорит, что его версия PHP - это 5.3.24
В чем может быть проблема?
Его PHP-версия на самом деле < 5.3.0, знает ли он это или нет.
См. ошибку, возникающую во многих версиях PHP.
Ответ 3
Если после указанной ошибки вы получите сообщение об ошибке "неожиданное T_STRING", вам необходимо установить PHP 5.4 +
Ответ 4
Попросите его создать файл с phpinfo()
. Вероятно, у него нет версии PHP >= 5.3.0.
Ответ 5
У меня возникла та же проблема, и я провел некоторое исследование, которое мне удалось исправить.
В моем случае я использую PHP7, и мне нужно было отредактировать файл laravel, расположенный в ~/.composer/vendor/laravel/installer/
, где строка shebang была #!/usr/bin/env php
изменена на #!/usr/bin/env php7
После повторного запуска мастера, я получил его работу:
-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.
Ответ 6
<FilesMatch "\.(inc|php|php3|php4|php44|php5|php52|php53|php54|php55|php56|phtml|phps)$">
AddHandler x-httpd-php53 .php
</FilesMatch>
в .htaccess
Ответ 7
Как и другие пользователи говорят: использование пространств имен допустимо только для версий PHP более 5,3,0, поэтому мое решение о том, чтобы включить дополнительное использование библиотеки с использованием пространств имен, - это проверить версию php и используйте функцию eval(), чтобы избежать появления ошибок в младших версиях PHP.
Что-то вроде этого:
if ( phpversion() > '5.3.0' ){
include_once('/path/to/Library.php');
eval("Library\Foo::bar();");
}