0

crontabを使用してスクリプトを実行しようとしていますが、コマンドラインからでもスクリプトを機能させるのに問題があります。スクリプトはブラウザから正常に実行され、reports/が所有するフォルダにいくつかのExcelファイルを作成しますapache。スクリプトファイルは私が所有しています:john

コマンドラインからスクリプトを実行しようとすると、次の警告が表示され、Excelファイルが作成されません。フルパスで試しましたが、同じ結果が得られます。

これは、コマンドラインからスクリプトを実行しようとした後に得られたものです

public_html]$ php include/tests/mailme.php

PHP Warning:  fopen(reports/4-March.xls): failed to open stream: Permission denied in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php on line 90

Warning: fopen(reports/4-March.xls): failed to open stream: Permission denied in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php on line 90
PHP Fatal error:  Uncaught exception 'Exception' with message 'Can't open reports/4-March.xls. It may be in use or protected.' in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php:93
Stack trace:
#0 /home/john/public_html/PHPExcel/Writer/Excel5.php(233):   PHPExcel_Shared_OLE_PPS_Root->save('reports/...')
#1 /home/john/public_html/include/generate_daily_excel.inc(401): PHPExcel_Writer_Excel5->save('reports/...')
#2 /home/john/public_html/include/tests/mailme.php(41): generateDailyExcel('04-02-2013')
#3 {main}
 thrown in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php on line 93

Fatal error: Uncaught exception 'Exception' with message 'Can't open reports/4-March.xls. It may be in use or protected.' in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php:93
Stack trace:
#0 /home/john/public_html/PHPExcel/Writer/Excel5.php(233): PHPExcel_Shared_OLE_PPS_Root->save('reports/...')
#1 /home/john/public_html/include/generate_daily_excel.inc(401): PHPExcel_Writer_Excel5->save('reports/...')
#2 /home/john/public_html/include/tests/mailme.php(41): generateDailyExcel('04-02-2013')
#3 {main}
  thrown in /home/john/public_html/PHPExcel/Shared/OLE/PPS/Root.php on line 93

の所有者を変更するとreports、ブラウザのバージョンを保存できなくなると思います。私はLinuxと権利に不慣れです。

4

2 に答える 2

2

コマンドラインからphpコードを実行するとき。スクリプトは、www-data ユーザー権限ではなく、ユーザー権限で実行されます。

スクリプトを root として実行する (推奨しません) か、代わりにファイルのアクセス許可を変更する必要があります。

  sudo chown yourUser:www-data file
  sudo chmod 664 file

そして、ディレクトリでほぼ同じことをする必要があります:

  sudo chown yourUser:www-data dir
  sudo chmod 775 dir
于 2013-03-04T08:59:37.847 に答える
1

エラーは、「ストリームを開くことができませんでした: 許可が拒否されました」という非常に明確に示されています。コマンドラインからこれを実行している場合、ユーザーは「john」です(ホームパスからだと思います)。ユーザー「john」には、レポート ディレクトリへの書き込み権限がありますか?

実際のレポート ディレクトリの権限は何ですか?

ls -al /home/john/public_html/reports
于 2013-03-04T09:00:18.807 に答える