这里没有解决方案适用于我的 "Class 'PDO' not found."

No solution here works for my "Class 'PDO' not found."

我知道这里有类似标题的问题,但 none 似乎对我有用,因此有理由创建一个新问题。

这就是问题所在,我有一个在本地主机上运行良好的网站,我确信它支持 PDO,但在我的共享主机上上传后,我得到了

Symfony\组件\调试\异常\FatalErrorException (E_UNKNOWN) Class 'PDO' 未找到

这里的解决方案都涉及编辑 php.ini 和安装 PDO 但是,我在共享主机上无法访问 php.ini 文件或 ssh。

我正在使用 laravel 5.5、php 7.2 版和 voyager 后端。

这是我的 .htaccess 的样子

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/ [R,L]

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ / [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

<IfModule mime_module>
  AddType application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>

任何帮助将不胜感激。谢谢

联系您的托管支持,让他们为您启用 PDO。

在某些主机中,您可以通过在主机根目录中创建 php.ini 文件来覆盖 php.ini。如果您在 windows 主机中,这些是您需要在 php.ini 中启用的扩展程序。

extension=php_pdo.dll
extension=php_pdo_mysql.dll

编辑:

检查您的托管服务提供商是否已安装 PDO。 创建 index.php 文件或您可以访问的任何其他文件。内容必须有

<?php
    phpinfo();
?>

如果 PDO 已经安装,下一步是 运行安装 composer(需要 SSH 访问)。您必须事先删除供应商文件夹。假设您的 public 文件夹是 /var/www/html。转到 html 目录和 运行

composer install

来晚了,但这是我的解决方案。我在 Laravel 5.6 遇到了同样的问题,由于某种原因我没有 SSH 访问权限。但是当我将 PHP version7.2 更改为 7.1 时,它对我有用。

希望这对没有 shell 访问权限的人有用。