シンボリックリンクを生成するPHPスクリプトを実行しています。
どのユーザーであるかを確認するには:
file_put_contents("testFile", "test");
$user = fileowner("testFile");
unlink("testFile");
echo "running as user '" . $user . "'";
var_dump( exec('whoami'));
こうして走って...
$ php script.php
正しく実行され、すべてのシンボリックリンクが確立され、出力は次のようになります。
running as user '999'string(5) "admin"
シェルスクリプトを介して実行:
#!/bin/sh
php /path/to/script.php
次の出力を提供しますが、動作しません。
PHP警告:Symlink():8行の/ path / to / script.phpで権限が拒否されました。ユーザー '999' string(5) 'admin' として実行しています。
同じユーザーとして実行されているので、2つの違いが何であるかわかりません。
正しいシンボリックリンク権限をすべて持つようにする方法に関する提案はありますか?
cat /proc/version
以下を提供します。
Linux version 2.6.39 (root@cross-builder) (gcc version 4.6.3 (x86 32-bit toolchain - ASUSTOR Inc.) ) #1 SMP PREEMPT Thu Oct 31 21:27:37 CST 2013
これは、あらゆる種類のリリース情報に対して生成できる唯一の出力です。
すべてのコード:
$files = scandir('/volume1/dir1');
$base = "/volume1/";
foreach($files as $file) {
$f_letter = $file{0};
$new_path = $base . "ByLetter/" . strtoupper($f_letter) . "/" . $file;
if(ctype_alpha ($f_letter) && !is_link($new_path)) {
var_dump($base. "TV/" . $file);
var_dump($new_path);
symlink ($base . "TV/" . $file , $new_path);
}
}
両方の方法のvarダンプは同じ出力を提供します。
ベストアンサー1
絶対パスを試してください。このコードはunlink("testFile");
現在の作業ディレクトリ内のファイルを探します。 pwd は現在の作業ディレクトリに応じて変更されます。だから使用unlink("/path/to/testFile");