我无法从谷歌应用引擎下载文件。这在计算引擎中工作。
$sql="SELECT * FROM $table ";
$query = $db->runQuery($sql);
if($query->num_rows > 0) {
$delimiter = ",";
$filename = $table . date('Y-m-d') . ".csv";
// create a file pointer
$f = fopen('php://memory', 'w');
// set column headers
$fields = array('id', 'srno', 'empid', 'empname');
fputcsv($f, $fields, $delimiter);
// output each row of the data, format line as csv and write to file pointer
while($row = $query->fetch_assoc()) {
// $status = ($row['status'] == '1') ? 'Active' : 'Inactive';
$lineData = array(
$row['id'], $row['srno'], $row['empid'], $row['empname'], ]
);
fputcsv($f, $lineData, $delimiter);
}
// move back to beginning of file
fseek($f, 0);
// set headers to download file rather than display it
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
//output all remaining data on a file pointer
fpassthru($f);
}
exit;
什么是日志,错误消息?您是如何部署此应用的?你能展示app.yaml
吗?应用是否与云 SQL 实例位于同一项目中?标准环境还是灵活环境?5 菲律宾比索还是 7 菲律宾比索?
将 App Engine 连接到云 SQL 时最常见的问题:
- 应用引擎服务帐号必须具有云 SQL 管理员角色
- 云 SQL 实例所在的项目必须同时激活云 SQL 和 SQL 管理 API
- 应用程序和 MySQL 实例之间的连接是通过代理完成的,您可以在 php 代码和 yaml 文件中配置代理。
下面是从 PHP72 连接到 MySQL 实例的示例,您也可以使用此代码进行本地测试。为此,您需要安装并运行云 SQL 代理客户端。
app.yaml
runtime: php72
handlers:
- url: .*
script: auto
env_variables:
MYSQL_USER: [MYSQL_USER]
MYSQL_PASSWORD: [MYSQL_PASSWORD]
MYSQL_DSN: 'mysql:dbname=[MYSQL_DB_NAME];unix_socket=/cloudsql/[MYSQL_INSTANCE_CONNECTION_NAME]'
beta_settings:
cloud_sql_instances: [MYSQL_INSTANCE_CONNECTION_NAME]
索引.php
<?php
$user = getenv('MYSQL_USER');
$password = getenv('MYSQL_PASSWORD');
$dsn = getenv("MYSQL_DSN") ?: "mysql:host=127.0.0.1;port=3306;dbname=[MYSQL_DB_NAME]";
$db = new PDO($dsn, $user, $password);
try {
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$statement = $db->prepare("SELECT * from [MYSQL_TABLE_NAME]");
$statement->execute();
$all = $statement->fetchAll();
foreach ($all as $data) {
echo $data["id"];
}
?>