当前位置: 首页 > 知识库问答 >
问题:

条令错误:“无法打开所需的'/tmp/_CG__Source.php'”

杨俊茂
2023-03-14

我正在尝试将我的PHP应用程序迁移到Ubuntu服务器,但没有成功。任何帮助都将不胜感激。

首先,我成功地将条令安装到/jorrit/myapp中,遵循条令入门手册的第一部分(直到“生成数据库模式”)。其次,我将我的PHP脚本(使用条令)放在/jorrit/myapp文件夹中。

当我尝试在CLI中运行我的PHP脚本时,我得到了以下错误消息:

PHP警告:require(/tmp/_CG__Source.PHP):无法打开流:第200行的/jorrit/myapp/vendor/doctrine/common/lib/doctrine/common/Proxy/AbstractProxyFactory.PHP中没有此类文件或目录

PHP致命错误:require():在第200行/jorrit/myapp/vendor/doctrine/common/lib/doctrine/common/Proxy/AbstractProxyFactory.PHP中打开required'/tmp/_u CG_uusource.PHP'(include_path=':/usr/share/PHP:/usr/share/pear')失败

Bootstrap.php如下所示:

<?php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once "vendor/autoload.php";

// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = false;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);

// the connection configuration
$dbParams = array(
        'driver'   => 'pdo_mysql',
        'host'     => 'xx',
        'user'     => 'xx',
        'password' => 'xx',
        'dbname'   => 'xx',
        'profiler' => 'false'
);


// obtaining the entity manager
$entityManager = EntityManager::create($dbParams, $config);

?>

我的PHP脚本的第一行:

<?php

require_once "bootstrap.php";
require_once 'classes.php';

$connection = $entityManager->getConnection();

该应用程序在我的开发环境(Windows)中运行良好。/tmp文件夹存在并且可以访问。数据库已成功迁移并已存在。我没有更改供应商文件夹中的任何内容。

有什么想法吗?提前感谢你的帮助。

共有3个答案

秦宏盛
2023-03-14

看起来像一个权限问题,首先应该检查整个应用程序文件夹的权限。

还可以尝试通过删除app/cache/*文件来硬清理缓存,然后重试。

祝你好运

西门飞翮
2023-03-14

$config行之后的代码中,您可以尝试$confi-

但是CLI版本要好得多,因为它避免了在代码中可能无法避免的刷新重新生成。

要更改缓存目录,您可以尝试:

$cacheDir = dirname(__FILE__).'/cache';
if (!is_dir($cacheDir)) {
    mkdir($cacheDir);
}


$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, $cacheDir);

金英华
2023-03-14

TL;DR您只需要手动生成代理类

vendor/bin/doctrine orm:generate-proxies

条令使用代理来连接数据库。代理是从实体类生成的。

在开发模式下,它会在每个请求上生成一个代理,因为您可以对实体类进行更改。

在生产模式下,它不会每次都生成代理。出于性能原因,它假设代理存在并直接包含它们。

代理生成有几种模式:

  1. 始终-它总是生成代理,这是开发模式的默认设置
  2. 永不-它永远不会生成代理,这是生产模式的默认设置
  3. ON_DEMAND-它只在代理文件不存在时生成代理。此选项的缺点是每次都要调用file_exists(),这可能会导致性能问题。

现在命令

vendor/bin/doctrine orm:generate-proxies

生成代理类 /tmp.我想说这可能仍然会造成麻烦,因为服务器上的其他应用程序可能会意外删除这些文件。一个选项是您可以更改您的 /tmp目录门禁权限1777

sudo chmod 1777 /tmp

777前面的严格位“1”意味着,尽管每个人都可以读/写/tmp目录,但您只能对自己的文件进行操作。i、 e.您不能删除其他用户创建的文件。

如需进一步阅读,请参阅http://docs.doctrine-project.org/en/latest/reference/advanced-configuration.html#auto-生成代理类(可选)

您还可以将代理目录设置为其他位置,以便其他应用程序无法修改它们。http://docs.doctrine-project.org/en/latest/reference/advanced-configuration.html#autoloading-代理

 类似资料:
  • 问题内容: 我从Apache得到以下错误 [2011年3月19日23:10:50周六] [警告] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的’/common/configs/config_templates.inc.php’(include_path =’ 。:/ usr / share / pear:/ us

  • 问题内容: 我收到这个奇怪的错误 我如何从中恢复?有任何想法吗 ? 谢谢 问题答案: 您丢失了与表1684和数据库17369相关的文件。在目录base / 17369中检查名称为1684的状态文件。 您可以确定它是哪个表: 1)获取数据库名称: 2)获取表名(连接到受影响的数据库): 可能没有更多可以做的事情了。仅从备份还原。

  • 我想在数据目录中为应用程序创建一个数据库。我试着使用 但我总是遇到以下异常:无法打开数据库文件 Logcat得出以下结果: 04-10 19:55:09.387: E/SqliteDatabase aseCpp(554):sqlite3_open_v2("/data/data/at.einkaufsliste/database/Einkaufsliste.sqlite", 我设置了权限外部存储和组

  • 问题内容: 我正在尝试从命令行运行Websphere自由配置文件服务器。我正在按照这里告诉的步骤进行操作:https : //developer.ibm.com/wasdev/downloads/liberty-profile-using-non-eclipse- environments/ 我创建了名称为server1的服务器。 但是当提取完成后,我尝试使用以下命令启动服务器: 服务器抛出错误:

  • 问题内容: 我正在尝试将图像加载到pygame的窗口中,但是当我运行代码时。弹出错误 pygame.error:无法打开backround.png 我将图像与代码本身放在同一文件夹中。我为另一个脚本完成了此操作,它工作得很好。我不确定是什么问题。 我尝试关闭程序。重命名文件,仅此而已。不确定如何解决该问题。任何帮助深表感谢 就像我说的那样:我使用类似的布局来加载带有另一个文件的图像,它工作得很好,

  • 问题内容: 我正在尝试为将要用于游戏的地图做基础,但无法将图像加载到屏幕上。我尝试使用相同的字母大小写将图像的绝对文件路径发送到图像,尝试更改图像的名称,尝试加载在我制作的其他程序中可以使用的其他图像,并且尝试放置图像与脚本本身位于同一目录中。什么都没有。我查看了遇到相同问题的人的一些话题,例如为什么我的pygame图片无法加载?而且我找不到我的问题的答案。图像将不会加载。这是代码: 和错误: 我