Php 网站上传后出现错误500(无htaccess,无WP)
我刚去上传了我在主机上建立的一个新项目的第一个版本。说清楚了,一切都准备好开始工作了,但最后我得到的是: HTTP错误500 我知道 我的项目是100%手工制作,使用PHP,没有WP或其他CMS/平台,并且没有Apache文件(.htaccess将稍后添加)。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
但是有一个错误日志文件,它总是有相同的行:
[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,如果没有其他解决方案,我会尝试一下。我检查了您链接的帖子并完成了