我已经为此工作了几个星期,但我再次面临文件问题。此代码表首先获取数据库中存在的所有条目,然后在获取一系列 id 后,使用附加的 WHERE 子句启动相同的查询来搜索属于客户的特定条目。< /span>最后,比较两个结果数组,以搜索数据库中存在但尚未分配给任何客户的任何条目,将其打印到 csv 文件中,以便启动代码的用户可以解决阻止这些条目链接到客户的问题。过去我遇到了一些有关文件和权限的问题,但这次没有出现错误,也没有消息提醒我我无权在所需位置打开文件或其他任何内容。我尝试沿着工作表插入一些var_dump(),看看该过程是否真的达到了fopen() 的效果。它只是跳过它,不创建文件也不写入数据。我查看了服务器日志,但没有发现任何内容,并且启用了错误和警告。这将从数据库中获取所有条目。$stmtOutgoing = $connAccounting->prepare("SELECT a.`zone`, b.`source_customer_billing_zone_id`, b.`source_external_subscriber_id`, count(*) AS llamadas, SUM((CEIL(b.`duration`))) AS duracion, SUM((b.`source_customer_cost`)/100) AS total, SUM((b.`source_customer_cost`)/100)/SUM((CEIL(b.`duration`))) AS precio FROM `billing`.billing_zones a INNER JOIN cdr b ON a.`id` = b.`source_customer_billing_zone_id` WHERE source_provider_id = :reseller_id GROUP BY b.`source_external_subscriber_id`, a.`zone` ORDER BY total desc");$stmtOutgoing->execute(array('reseller_id' => $reseller));foreach ($stmtOutgoing as $row) { array_push($totalEntries, $row); echo "CDR Entry Added ";}获取 ids 后,将有一个 loop 将所有 ids 插入此查询中:foreach ($invoices as $invoice) { if ($invoice['date'] >= $minDateSearchTstmp && !empty($invoice["customFields"]) && $invoice["customFields"][0]["field"] == "ID_EXTERNAL" && $invoice["customFields"][0]["value"] != "") { $z = 0; while ( isset($invoice['customFields'][$z]['field']) && $invoice['customFields'][$z]['field'] == 'ID_EXTERNAL' ) { $source_external_subscriber_id = $invoice["customFields"][0]["value"]; renewConnection($connAccounting, $stmtOutgoing, $stmtIncoming); require '../connections/accountingConnection.php'; } } }}
1 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
我忘记发布我找到的解决方案作为答案。这里的问题在于,每次我用新文件覆盖旧文件时,出于我不知道的原因,文件的所有者和权限都会发生变化,从而阻止 apache 用户www-data
从创建文件。
项目文件夹是通过 ssh 发送的,因此每当我必须更新某些内容时,我只需使用 chown
和 chmod
来恢复用户和权限分别影响 www-data
和 755
的文件夹/文件。
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消