だから私はいくつかのCSVテキストファイルからデータをロードし、顧客のための美しいGoogleチャートとテーブルを生成する素晴らしいレポートページをPHPにしました。その後、テキストファイルが共有Dropboxフォルダにある場合は、従業員がコードを復号化したりデータベースを処理したりせずにテキストファイルを更新し、オンラインでその更新を表示できるようにしたいと思いました。これは私のローカル開発ではうまく機能しますが、本番サーバーにコードをアップロードすると問題が発生します。私の考えでは、これはUnix権限の問題であり、PHPエラーです。
[Sun Apr 07 11:27:58 2013] [warn] [client 208.69.41.10] mod_fcgid: stderr: PHP Warning: file(/root/Dropbox/Reports/client-report.csv): failed to open stream: Operation not permitted in /var/www/vhosts/mydomain.com/httpdocs/my-awesome-report-page.php on line 49, referer: http://www.mydomain.com/my-awesome-report-page.php
PHPがCSVファイルをインポートできるようにする最善の方法は何ですか/root/Dropbox
?本番ではCentOS 5.8を実行しています。
サイトの httpdocs フォルダにあるファイルは mydomain:psacln に属するように見えますが、root~ にあるファイルは root:root です。
コメントで議論したように、安全な解決策を見つけたいと思います。レポートページHTMLはログイン情報の後に隠されています。
答え1
ドキュメントルートからフォルダへのシンボリックリンクを設定します。
ln -s /var/www/reports /root/Dropbox/Reports
ファイルを読み取ることができれば、ApacheとPHPのセキュリティ設定を変更せずにファイルに直接アクセスできます。
答え2
あなたの問題を解決するための2つのアイデアがあります。
crontab -e
必要なファイルをWebサーバーが読み取り可能なフォルダにコピーするルート()でcronjobを作成できます。
1分ごとに実行するようにcronjobを設定できます。これはほとんどの状況で十分です。- アーカイブアカウントの新しいユーザーを作成します(必ずしも必要でない場合はrootとして実行するのは良い習慣ではありません)。また、必要に応じてフォルダに共有アクセス権を持つ別のDropboxユーザーを作成することをお勧めします。だから、誤って欲しいものよりも共有することはありません。
詳細について知りたい場合は、お気軽にお問い合わせください:)