我创建了一个php artisan命令,并以bheng
用户
php /home/forge/site.com/artisan products:exportdiff --env=production
将文件导出到我的/files/product-exports/
目录
另外,我已经做过
chmod -R 777 files/product-exports/
导出部分工作正常,我将文件导出,如下图所示
white
和green
颜色代码有什么不同?
为什么它放在点.
下面?
这有什么意义吗?
这是否与权限有关?
如何继续进行调试?
我现在正在接受任何建议。
任何提示/建议/帮助都将非常感谢!
根据 @Tensibai
的要求cd /home/forge/site.com/& amp;& pwd&& php /home/forge/site.com/artisan产品:exportdiff --env =生产
/home/forge/site.com
.
Export created successfully. Export ID is 1085
Source: /home/forge/site/files/product-exports/export1085_2016-11-23.csv
Destination: /Site/inbound/products/productexport1085_2016-11-23.csv
$source NOT exist !
[Exception]
Could not open local file: /home/forge/site/files/product-exports/export1085_2016-11-23.csv.
products:exportdiff
$source = /home/forge/site/files/product-exports/export1088_2016-11-23.csv
我已尝试dd(file_exists($source));
它保持返回bool(false)
是否因为我检查file_exists的方式?
以下是ExportProductsDiff.php
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class ExportProductsDiff extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'products:exportdiff';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Export all products to Diff.';
/**
* The system export message.
*
* @var string
*/
protected $system_message = '[System Diff Export]';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
// Export the products by calling the ExportProducts Command
$options = [
'--format' => "distributor",
'--encoding' => "standard csv",
'--categories' => "all categories",
'--conjugate' => 1,
'--include_disabled'=> 1,
'--export_notes' => $this->system_message
];
// Run the export
$this->call('products:export', $options);
$last_run_export = ProductExport::where('notes', '=', $this->system_message)
->where('status', '=', 'finished')
->where('format', '=', 'distributor')
->orderBy('id', 'desc')
->firstOrFail();
$this->info('Export created successfully. Export ID is ' . $last_run_export->id);
$env = $this->option('env');
if ($env == 'production'){
$localdomain = '*******';
}else{
$env = 'development';
$localdomain = '*******';
}
$sftp_server = '*******';
$sftp_user_name = '*******';
$sftp_user_pass = '*******';
// Open the SFTP connection
$connection = @ssh2_connect($sftp_server);
if (!$connection)
{
throw new Exception("Could not connect to $sftp_server.");
}
// Login to the SFTP server
if (! @ssh2_auth_password($connection, $sftp_user_name, $sftp_user_pass))
{
throw new Exception("Could not authenticate with username $sftp_user_name " .
"and password $sftp_user_pass.");
}
$sftp = @ssh2_sftp($connection);
if (!$sftp)
{
throw new Exception("Could not initialize SFTP subsystem.");
}
// Prepare the files
$source = '/home/forge/site/files/product-exports/' . $last_run_export->file_name;
/////////////////////////////////////
//The bug is here
// update site to site.com
/////////////////////////////////////
$destination = '/Site/inbound/products/product' . $last_run_export->file_name;
$this->info('Source: ' . $source);
$this->info('Destination: ' . $destination);
if (!file_exists('/Site/inbound/products/')) {
ssh2_sftp_mkdir($sftp, '/Site/inbound/products/', 0775, true);
}
dd(file_exists($source));
if (file_exists($source)) {
chmod($source, 0775);
}else{
$this->info('$source NOT exist !');
}
// Upload the file
$stream = @fopen("ssh2.sftp://$sftp$destination", 'w');
if (!$stream)
{
throw new Exception("Could not open file: $destination");
}
$data_to_send = @file_get_contents($source);
if ($data_to_send === false)
{
throw new Exception("Could not open local file: $source.");
}
if (@fwrite($stream, $data_to_send) === false)
{
throw new Exception("Could not send data from file: $source.");
}
@fclose($stream);
// Delete the export when finished
if (file_exists(base_path() . ProductExport::path . $last_run_export->file_name))
{
unlink(base_path() . ProductExport::path . $last_run_export->file_name);
}
$last_run_export->delete();
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array();
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array();
}
}
答案 0 :(得分:2)
白色和绿色代码有什么不同?
绿色表示可执行文件(+ x),原因是之前的chmod 777
为什么它放在圆点下面。 ?
我假设您按照修改时间按升序对条目进行排序ls -altr
,每次创建文件时,目录inode都会被修改,因此它会在您的文件之前列出(目录在创建文件时修改,在写完所有文本后修改文件)
这有什么意义吗?
嗯,一般来说是的,特别是对于你的错误,我们从你开始的目录中找不到任何线索,如果它相对于你所在的地方写的话,那么你是不是很正常。找到文件。
尝试ls /home/forge/biossantibodies.com/files/product-exports/
,如果收到错误cd /home/forge/biossantibodies.com/
,请重新运行php命令。
答案 1 :(得分:1)