Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 网站上传后出现错误500(无htaccess,无WP)_Php_Apache_Syntax Error_Error Log - Fatal编程技术网

Php 网站上传后出现错误500(无htaccess,无WP)

Php 网站上传后出现错误500(无htaccess,无WP),php,apache,syntax-error,error-log,Php,Apache,Syntax Error,Error Log,我刚去上传了我在主机上建立的一个新项目的第一个版本。说清楚了,一切都准备好开始工作了,但最后我得到的是: HTTP错误500 我知道 我的项目是100%手工制作,使用PHP,没有WP或其他CMS/平台,并且没有Apache文件(.htaccess将稍后添加)。 但是有一个错误日志文件,它总是有相同的行: [19-Jan-2017 12:59:06 America/Chicago] PHP Parse error: syntax error, unexpected '$sgbd' (T_VARI

我刚去上传了我在主机上建立的一个新项目的第一个版本。说清楚了,一切都准备好开始工作了,但最后我得到的是:

HTTP错误500

我知道

我的项目是100%手工制作,使用PHP,没有WP或其他CMS/平台,并且没有Apache文件(.htaccess将稍后添加)。
但是有一个错误日志文件,它总是有相同的行:

[19-Jan-2017 12:59:06 America/Chicago]
PHP Parse error:  syntax error, unexpected '$sgbd' (T_VARIABLE)
in /path/to/the/file.php on line 1
它指的是我的数据库连接文件:

<?php
$sgbd = "mysql";
$host = "localhost";
$database = "dont_worry";
$charset = "utf8";
$user = "this_is_not";
$password = "my_infos";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];
try {
    $bdd = new PDO('' . $sgbd . ':host=' . $host . ';dbname=' . $database . ';',
'' . $user . '', '' . $password . '', $options);
} catch (Exception $e) {
    die('Erreur : ' . $e->getMessage());
}
?>

我验证了这个文件并多次修改它以试图找到解决方案。唯一的方法是删除并重新上载完整的项目。

引用的源代码中没有语法错误,除非您在PHP 5.3或更早版本上运行此代码,否则:

$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];
将导致语法错误,如下所示

除上述内容外,以下行:

$bdd = new PDO('' . $sgbd . ':host=' . $host . ';dbname=' . $database . ';',
               '' . $user . '', '' . $password . '', $options);
这是过度工程化的。做
你输入了很多,因为这仅仅等于空的字符串。第二行还显示您在理解变量变量值之间的差异时遇到问题。这应该简单地写为:

$bdd = new PDO("{$sgbd}:host={$host};dbname={$database};", $user, $password, $options);
除了上面提到的,这不应该是你面临的500美元的原因

编辑

如果您可以从命令行调用PHP(在大多数Linux上,它是作为单独的软件包提供的(即
PHP cli
,因此您可能需要先安装它)),那么您可以使用
-l
开关检查文件的语法:

$ php -l file.php
如果有任何问题,那么您将看到错误消息。如果在解析file.php时只看到
错误,但没有看到详细信息,请将
-d error\u reporting=E\u ALL
添加到参数列表中:

$ php -d error_reporting=E_ALL -l file.php

或者,您也可以尝试直接在浏览器中访问您的文件(如果它不在文档根目录中,只需复制它以使其可用-单独调用它没有意义并不重要-您只需要确保查看的是正确的文件-如果这样做,则会记录语法错误。如果这是错误的文件,则不会发生任何事情。

引用的源代码中没有语法错误,只有例外。)如果您在PHP 5.3或更早版本上运行此代码,那么:

$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];
将导致语法错误,如下所示

除上述内容外,以下行:

$bdd = new PDO('' . $sgbd . ':host=' . $host . ';dbname=' . $database . ';',
               '' . $user . '', '' . $password . '', $options);
是过度工程化的。执行
绝对没有意义。“
您键入了很多,因为这仅仅等于空字符串。第二行还显示您在理解变量变量值之间的差异时遇到了问题。这应该很容易写成:

$bdd = new PDO("{$sgbd}:host={$host};dbname={$database};", $user, $password, $options);
除了上面提到的,这不应该是你面临的500美元的原因

编辑

如果您可以从命令行调用PHP(在大多数Linux上,它是作为单独的软件包提供的(即
PHP cli
,因此您可能需要先安装它)),那么您可以使用
-l
开关检查文件的语法:

$ php -l file.php
如果有任何问题,那么您将看到错误消息。如果您只看到
错误解析文件.php
,但没有详细信息,请将
-d error\u reporting=E\u ALL
添加到参数列表中:

$ php -d error_reporting=E_ALL -l file.php

或者,您也可以尝试直接在浏览器中访问您的文件(如果它不在文档根目录中,只需复制它以使其可用-单独调用它没有意义并不重要-您只需要确保查看的是正确的文件-如果这样做,则会记录语法错误。如果这是错误的文件,则不会发生任何事情。

您可能有一个旧版本的PHP。如果您有命令行access到您的服务器运行
php--version
否则,添加
phpinfo();exit;
在代码的第一行中查看版本号并发送给我们。@Ibu我没有命令行访问权限,但有一个cPanel允许我选择PHP版本。在验证我是否使用PHP 7.1后,如果您不知道从何处开始跟踪错误,请从头开始进行故障排除。从WW中删除所有文件创建一个空白的
index.php
文件,看看是否仍然存在错误。将
放在
index.php
文件中,看看是否仍然存在错误……等等,继续构建它,直到看到错误……你应该知道……一些基本的疑难解答。或者,您可以反向执行相同的过程,有系统地剥离代码,直到500个错误清除。谢谢@Sparky,如果我没有其他解决方案,我会尝试这样做。我检查了您链接的帖子,目前没有发现任何问题基本的故障排除…这应该是您的第一个选择,而不是最后一个选择。我的意思是,我们这里绝对没有任何问题…任何问题NSWER将是盲目猜测,因此在我们开始提供帮助之前,您有责任完成基本的故障排除。您可能有较旧版本的PHP。如果您有对服务器的命令行访问权限,请运行
PHP--version
,否则,添加
phpinfo();exit;
在代码的第一行中查看版本号并发送给我们。@Ibu我没有命令行访问权限,但有一个cPanel允许我选择PHP版本。在验证我是否使用PHP 7.1后,如果您不知道从何处开始跟踪错误,请从头开始进行故障排除。从WW中删除所有文件创建一个空白的
index.php
文件,看看是否仍然存在错误。将
放在
index.php
文件中,看看是否仍然存在错误……等等,继续构建它,直到看到错误……你应该知道……一些基本的疑难解答。或者,您可以反向执行相同的过程,有条不紊地剥离代码,直到500个错误清除。谢谢@Sparky,如果没有其他解决方案,我会尝试一下。我检查了您链接的帖子并完成了